2
我總是遇到問題,試圖轉換我創建的遞歸算法,返回2遞歸調用,直到滿足基本情況。將返回2遞歸的遞歸函數轉換爲迭代
很容易追蹤每次遞歸調用的做法,但將它們轉換爲迭代有點令人困惑。
例如此遞歸函數
BEGIN SEQ(n)
if (n == 1)
return 3;
else if (n == 2)
return 2;
else
return SEQ(n - 2) + SEQ(n - 1)
這是相當直截了當的,當我嘗試橡膠鴨通過其產生的後續過程
SEQ(6)= SEQ(遞歸我的方式4)+ SEQ(5)
SEQ(5)= SEQ(3)+ SEQ(4)
SEQ(4)= SEQ(2)+ SEQ(3)
SEQ(3)= SEQ(1)+ SEQ(2)
SEQ(2)= 2
...
SEQ(3)= 3 + 2 = 5
SEQ(4)= 2 + 5 = 7
SEQ(5)= 5 + 7 = 12
SEQ(6)= 7 + 12 = 19
但是,我不能似乎想出一個迭代的方式返回遞歸是如何執行
算法做不太適合這個例子。你是說在最後一行中有'return SEQ(n-2)+ SEQ(n-1)'? – Henry
對不起,錯字錯誤。 –
除了起始值之外,它的構建方式與斐波納契數列相同。你找到的任何迭代程序都很容易修改。 – Henry