【发布时间】:2018-04-26 17:09:23
【问题描述】:
我正在尝试在球拍中创建一个“慢”指数函数,该函数接受一个基数和一个指数 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)。有什么建议吗?
【问题讨论】:
-
参数
n应该是某个整数,但您的递归调用会在其位置传递一个列表。因此,(make-list n base)第二次评估时,它会抛出一个错误,因为n现在是一个列表。此外,每个递归函数都需要基本案例。基本情况将取决于您要迭代的内容。