私はちょうどC++プログラミングを開始しましたが、再帰関数がどのように機能するかを示すために使用された特定のプログラムにちょっと残っています。私は再帰関数の前提を知っています、それは終了条件が満たされるまでそれ自身を呼び出す関数です。C++(初心者レベル)の再帰関数について
上記のコードでは、if文が終了条件になっています。 http://www.cprogramming.com/tutorial/lesson16.html
特にこのコード:
は、しかし、私を倒してしまったコードは、このリンクからだった直後に上記のコードで
#include <iostream>
using namespace std;
void printnum (int begin)
{
cout<< begin<<endl;
if (begin < 9) // The base case is when begin is greater than 9
{ // for it will not recurse after the if-statement
printnum (begin + 1);
}
cout<< begin<<endl; // Outputs the second begin, after the program has
// gone through and output
}
int main()
{
printnum(1);
return 0;
}
OP:
1
2
3
4
5
6
7
8
9
9
8
7
6
5
4
3
2
1
、私は最初の9までの出力を理解しかし、その後、ifループに続くcout文が、printvalueが最初に呼び出されたときの値に元の値に達するまで、begin変数のカウントを開始させるのはなぜですか?私はここで出口の状態を本当に理解していないと思います。
私が紛失していることがわかりません。何か助けていただければ幸いです。
ありがとうございました。
。 –
これは、*と*を呼び出す前に印刷するためです。これは '1'を出力します...'その他の呼び出し '...' 1'など – Boiethios
デバッガを使ってコードを1行ずつ進めて、再帰呼び出しに入ります。それはあなたに何が起こっているかを知るかもしれません。 –