假設這個隨機碼是類似於工作的技術我很關心這樣一個問題:遞歸迭代返回等價嗎?
int randomNumber(int n) {
if (n <= 0)
return 3;
int c1 = 1+randomNumber(n-2);
int c2 = 2 + randomNumber(n-1);
return c1 + c2;
}
我想將其轉換爲迭代形式,每次調用相當於推的東西明確的堆棧,但是每一個返回語句都會返回給調用者,這相當於什麼?我想在每次調用後將位置保存在堆棧中,並在返回語句後再次返回,但這似乎是不可能的。
編輯:讓自己更加明確,認爲這更復雜隨便舉個例子:
int pal(string s, int i) {
if (i > s.length()/2) {
return 0;
}
string s1 = s, s2 = s;
int c1, c2;
if (s1[i] == s1[i + 1]) {
s1.insert(i + 1, "a");
c1 = 1 + pal(s1, i + 1);
}
else {
c1 = pal(s1, i + 1);
}
if (s2[i] == s2[i + 2]) {
s2.insert(i + 2, "b");
c2 = 1 + pal(s2, i + 1);
}
else {
c2 = pal(s2, i + 1);
}
return c1 > c2 ? c1 : c2;
}
我不認爲這將是由相同的簡單
EDIT2轉換爲迭代形式:我的問題原來是因爲我想前面的最後一個例子,我想盡量減少其對大串時間(不佔永來計算大串的結果的程序像以前的一個)
儘量減少這樣的功能的時候,例如
我想你應該學習動態規劃。 – MikeCAT