C/C++言語 再帰関数
C/C++での再帰関数の挙動
C/C++で関数を作成し、その中で同じ関数を実行すると for文を用いなくとも繰り返し処理される。
サンプルプログラム1
#include <iostream>
using namespace std;
void increase(int i);
int main(void){
increase(0);
return 0;
}
void increase(int i){
if(i < 5){
increase(i + 1);
cout << i << " " << endl;
}
}
これを実行すると次のようになる
4 3 2 1 0
これは同じ関数が同じ関数内で実行されているのだが、イメージしづらいだろう。 挙動自体は次のプログラムのようにふるまう。
void increase(int i) {
if (0 < 5) {
if (1 < 5) {
if (2 < 5) {
if (3 < 5) {
if (4 < 5) {
if (5 < 5) {
cout << 5 << " " << endl; //ここから外に出る連鎖が始まる
}
cout << 4 << " " << endl;
}
cout << 3 << " " << endl;
}
cout << 2 << " " << endl;
}
cout << 1 << " " << endl;
}
cout << i << " " << endl;
}
}
ちなみに、coutの部分をprintf("%d ",i)に置き換えることでC言語としてかける。
参考
[1] ハーバート・シルト : “独習C第4版”, 株式会社 翔泳社, pp.196-200, 2014
※間違ってたらすみません。
わかった時点で修正します。
コメント
コメントを投稿