概要
基本情報で再帰の問題があったため
アウトプットのために記事に書きます。
バージョン
- php 8.1
再帰とは
佐々木真さんの記事が分かりやすいです
https://wa3.i-3-i.info/word14899.html
自分で作った関数の中に自分で作った
関数を呼びだす。イメージしずらいですよね
難しいのでコードで見ていきましょう
対象コード
<?php
//再帰
function father(){
$result = son(3);
echo $result;
}
function son($num){
if($num > 0 ){
return $num * son($num - 1);
}
else if($num == 0){
return 1;
}
else{
return 0;
}
}
father();
?>
father関数でson関数に3を入れ、
son関数を見ます。
function son($num){
if($num > 0 ){
return $num * son($num - 1);
}
else if($num == 0){
return 1;
}
else{
return 0;
}
son関数の$numに3を入れてます。
直接入れているわけではないですが、
今回father関数の中にあるson関数に3を入れてますよね。それが反映されています。
関数はそういうものです。
if($num > 0 ){
return $num * son($num - 1);
}
$num = 3なので、このif文に該当します。
returnでson関数を再度呼び出しています。
自分と同じ関数を何度も呼び出すことを、
再帰と言います。
上記のif文を見て
$num = 3なので
3になり、son(2)になります。
これが0になるまで続きますので
3×2×1になります。
$num = 0 または-1であればelseで処理されます。
最後にreturnで返された値が$resultに行き
6が表示されます。
結論
短いコードならばfor文でいいですね。
しかし再帰を知ればできることも増えます。
下記の記事はその例が多く乗ってます。
私ももっと勉強します!
疑問点があれば質問してください。
ここおかしいよっていう方もお願いします。