1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

リカーシブ(再帰)をphpで解説

Last updated at Posted at 2023-08-09

概要

基本情報で再帰の問題があったため
アウトプットのために記事に書きます。

バージョン

  • 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文でいいですね。

しかし再帰を知ればできることも増えます。
下記の記事はその例が多く乗ってます。

私ももっと勉強します!
疑問点があれば質問してください。
ここおかしいよっていう方もお願いします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?