我剛開始學習遞歸和我卡上包括尋找在炮彈一堆與每個級別顯然是一個平方數如炮彈的數量問題。棧頂是1,第二個是4,第三個是16 ...等值不保留?
我跟蹤的步驟在Xcode看變量的值和我所看到的是,當達到「numBalls」基本情況是正確的,但當堆棧幀結束時,不返回值和將丟失。
我覺得我應該知道如何解決這個問題,但我似乎無法弄清楚。
這裏是我使用的代碼:
#include <iostream>
using namespace std;
int GetCannonballs(int height, int numBalls);
int Cannonballs(int height);
int main(int argc, char *argv[]) {
cout << Cannonballs(3) << endl;
}
int GetCannonballs(int height, int numBalls)
{
if(height <= 0) {
return numBalls;
} else {
return GetCannonballs(height-1, numBalls + (height*height));
}
}
int Cannonballs(int height) // Wrapper function
{
int numBalls = 0;
GetCannonballs(height, 0);
return numBalls;
}
返回值我得到的是。
任何幫助或我的錯誤或誤解的解釋將是非常讚賞!
謝謝。
哇哦......我無法相信我多久花在這個愚蠢和明顯的bug ......這是相當尷尬的。不錯啊,有一個教訓在這裏調試瞭解到我想,哈哈。謝謝塞斯,月亮和我錯過了其他回答者的名字:) – Jarrod 2012-02-07 00:37:21