【发布时间】:2014-01-20 10:22:27
【问题描述】:
我目前正在用 Scheme 编写一个简单的程序,它可以递归地将数字相加,而不使用 + 运算符。现在我有这个程序可以做我想做的事情:
(define (add1 x) (+ x 1))
(define (sub1 x) (- x 1))
(define (plus x y)
(if (zero? y)
x
(plus (add1 x) (sub1 y))
)
)
但是,我的导师要求我放弃尾递归/迭代,并编写完全递归的 plus 过程。不用告诉我太多(这毕竟是一个 Uni 练习),你能指出我正确的方向来弄清楚如何去做吗?
提前致谢!
【问题讨论】:
-
如果不想尾递归,只需要移动
add1,但我不会说在哪里。 (add1不如何使用+?我很确定它确实如此。) -
告诉你的导师尾递归是“完全递归”的。
-
这是我听过的最愚蠢的练习。
标签: recursion scheme tail-recursion