私はちょうど再帰を学ぶようになりました。そして、各レベルが明らかに正方形であるような砲弾の山の中に砲弾の数を見つけることを含む問題に固執しています。トップスタックは3分の1が16であるというように...再帰的なスタックフレームから戻ったときに値が保持されませんか?
私は変数の値を見てXcodeでの手順をトレースし、どのような私が見ていることということでてきた、第二は4で、1であります基底ケースに達すると '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;
}
私が手戻り値はです。
私のエラーや誤解のご意見やご指摘をお待ちしております。
ありがとうございます。
すごいああ...私はそれはかなり恥ずかしいです...私はこの愚かなと明白なバグに費やすどのくらい信じられません。ああ、デバッグにはここで学ぶべきレッスンがあると思います。ありがとうセス、ムーンと私の名前を逃した他のanswerer :) – Jarrod