每个递归都能转换成迭代吗?A Reddit线程提出了一个明显有趣的问题:尾递归函数可以很小地转化为迭代函数。其他的,可以通过使用显式堆栈进行转换。能,会,可以每一,每个递归转化为迭代?文章中的(计数器?)示例是对:(define (num-ways x y)
(case ((= x 0) 1)
((= y 0) 1)
(num-ways2 x y) ))
(define (num-ways2 x y)
(+ (num-ways (- x 1) y)
(num-ways x (- y 1))
3 回答

慕沐林林
TA贡献2016条经验 获得超9个赞
是否总是可以为每个递归函数编写非递归形式?
HALT
,这将停止执行 r = r + 1
哪里 r
是任何登记册 r = r – 1
哪里 r
是任何登记册 GOTO x
哪里 x
是个标签 IF r ≠ 0 GOTO x
哪里 r
是任何登记册 x
是个标签 一个标签,后面跟着上面的任何命令。

Helenr
TA贡献1780条经验 获得超4个赞
添加回答
举报
0/150
提交
取消