読者です 読者をやめる 読者になる 読者になる

再帰処理(再帰呼び出し)

Aの中にAというイメージそのまま。
自分自身を呼び出す処理が書かれている関数 = 自分の関数の中に自分の関数がある
この関数を再帰関数という。

 

再帰処理再帰呼び出し ) とは、

再帰関数を呼び出すこと。
つまり
自分自身を呼び出す関数が書かれている関数を呼び出すこと。

 

じゃあ無限ループするんでないか?という疑問があったが、
処理の書き方によっては正常に終わる。
逆を言えば、永久に処理が終わらない書き方になってしまうこともある。

再帰処理を書く際の注意点は、

1) 終了条件が間違っていると、永遠に処理が終わらない。
2) 入れ子が深くなると、メモリが足りなくなる。

自分は永久に終わらないコード書いてしまいそうだ。

 

以下サンプルコード(拝借したもの)。

function hoge($num){
     $num = $num-1;
         if($num != 0){
              print($num. '-In<br/>');
              return hoge($num);
         } else {
              return 0;
         }
}
$show = hoge(10);
print($show. '-end');

上記の結果は ↓。

9-In
8-In
7-In
6-In
5-In
4-In
3-In
2-In
1-In
0-end

コードの「return hoge($num); 」を「hoge($num);」にすると、
0-end が -end に代わる。
「return 0;」を「return ;」にしても -end となる。
ぶっちゃけまだ動きを理解していない

 

こちらを参照
http://wa3.i-3-i.info/word14899.html

一先ず以上。(階乗のプログラムを書けば理解深まるらしい)

koshinran.hateblo.jp