-2
私が解決している問題は、ユーザーによって数値入力を受け取り、私は負の数に達するまで私がその番号に戻るまで5でバックアップしてください。私はループを全く持たない再帰のみを使用してこれを行う必要があります。コードの継ぎ目は、大部分の権利のために動作するように値が0この再帰では何が起こっていますか?私はカウントダウンする必要があります/ループなしの再帰を使用して
void Func(int num, int base, bool flipped)
{
cout << num << endl;
if (flipped == false && num > 1)
{
Func(num - 5, base, flipped);
}
flipped = true;
if (num < base)
{
Func(num + 5, base, true);
}
return;
}
で周りのバックフリップをするまで、私は17の入力に上記のコードから取得しています出力は次のようになります。 17、 12、 7、 2、 -3、 2、 7、 12、 17、 7、 12、 17、 12、 17、
何らかの理由で2回目の再帰に問題があるようです。私がこれまでに試したことは、ブールを静的にして、どこでもreturn文を追加することです。何か助けてくれてありがとう!
してください[あなたのゴム製のアヒルとの約束を作る](https://en.wikipedia.org/wiki/Rubber_duck_debugging)。 –
どのようなデバッガを使用していますか? Visual C++の場合は、コールスタックペインが役立ちます。 – sergiol
あなたが戻ってきた場所とどこにいないのかをメモしてください。他のすべての再帰呼び出しが終了したら、何が起きてその時点に戻りますか? –