【发布时间】:2013-10-05 15:18:51
【问题描述】:
我在方案中编写尾递归幂函数时遇到问题。我想使用辅助函数编写函数。我知道我需要一个参数来保存累积值,但在那之后我被卡住了。我的代码如下。
(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))
谁能解释一下为什么辅助函数应该和主函数有相同的参数。我很难想出为什么这是必要的。
【问题讨论】:
标签: function recursion scheme tail-recursion tail