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

※間違ってたらすみません。
わかった時点で修正します。

コメント

このブログの人気の投稿

ダイソー テープライト リモコン付 分解

C++ round関数を使わずに小数第n位の四捨五入をする

C++ cout関数とcin関数を用いた基本的な入出力