我在方案中编写尾递归幂函数时遇到问题。我想使用辅助函数编写函数。我知道我需要一个参数来保存累积值,但在那之后我被卡住了。我的代码如下。
(define (pow-tr a b)
(define (pow-tr-h result)
(if (= b 0)
result
pow-tr a (- b 1))(* result a)) pow-tr-h 1)
我编辑了我的代码,现在它可以工作了。如下:
(define (pow-tr2 a b)
(define (pow-tr2-h a b result)
(if (= 0 b)
result
(pow-tr2-h a (- b 1) (* result a))))
(pow-tr2-h a b 1))
有人可以向我解释为什么辅助函数应该与主函数具有相同的参数。我很难想出为什么这是必要的。