2017-11-13 6 views
1

라켓에 "느린"지수 함수를 생성하려고합니다. 기본 및 지수 n을 취합니다. 나는이 함수를 생성하고 그 자체로 n 배를 곱하여 내 대답을 얻고 싶다. 첫 번째 (주어진 기본 및 지수 매개 변수, 내 자신의 expt 함수를 만들려고합니다

(define (slow-expt base n) 
    (local [(define listn (make-list n base))] 
    (cons (* (- base 1) (first listn)) 
      (slow-expt base (rest listn))))) 

내 오류가 * 두 번째 인수가 숫자로 기대하는이지만, 부여해야합니다 : 내 대답을 얻을 수있는 가장 좋은 방법을 목록입니다 만들 생각하지만 몇 가지 문제로 실행 해요 listn). 충고하나요?

+0

인수'n' 일부 정수를 것으로 예상하지만 재귀 호출은 그 위치에서 목록을 전달합니다 . 그러므로 두 번째'(make-list n base)'가 평가되면'n'이 이제리스트이기 때문에 에러를 던질 것입니다. 또한 모든 재귀 함수에는 기본 사례가 필요합니다. 기본 케이스 (들)은 반복되는 작업에 따라 다릅니다. – assefamaru

답변

0

목록이 문제와는 아무 상관이없는, 단순히 그 자체로 base을 곱 n 시간 :

(define (slow-expt base n) 
    (if (= n 0) 
     1 
     (* base (slow-expt base (- n 1)))))