每個遞歸都能轉換成迭代嗎?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
提交
取消