List 给定一个基数和一个指数参数,我想创建自己的expt函数

List 给定一个基数和一个指数参数,我想创建自己的expt函数,list,recursion,racket,List,Recursion,Racket,我试图在球拍中创建一个“慢”指数函数,它接受一个基数和一个指数,n。我想创建这个函数,将基数乘以n次,得到我的答案。我认为创建列表是获得答案的最佳方式,但我遇到了一些问题: (define (slow-expt base n) (local [(define listn (make-list n base))] (cons (* (- base 1) (first listn)) (slow-expt base (rest listn))))) 我的错误是*期望

我试图在球拍中创建一个“慢”指数函数,它接受一个基数和一个指数,n。我想创建这个函数,将基数乘以n次,得到我的答案。我认为创建列表是获得答案的最佳方式,但我遇到了一些问题:

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

我的错误是*期望第二个参数是一个数字,但应该给出它(第一个listn)。有什么建议吗

列表与此问题无关,只需将
base
自身乘以
n
倍:

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

列表与此问题无关,只需将
base
自身乘以
n
倍:

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

参数
n
应为某个整数,但递归调用在其位置传递一个列表。因此,第二次计算
(make list n base)
时,它将抛出一个错误,因为
n
现在是一个列表。此外,每个递归函数都需要基本情况。基本情况将取决于您迭代的内容。参数
n
应为某个整数,但递归调用会在其位置传递一个列表。因此,第二次计算
(make list n base)
时,它将抛出一个错误,因为
n
现在是一个列表。此外,每个递归函数都需要基本情况。基本情况将取决于您迭代的内容。