ホームページ >バックエンド開発 >PHPの問題 >PHPでの再帰関数は何を意味しますか

PHPでの再帰関数は何を意味しますか

青灯夜游
青灯夜游オリジナル
2022-05-31 12:01:152299ブラウズ

PHP における再帰関数とは、関数本体内で直接的または間接的に自分自身を呼び出す自己呼び出し関数のことを指しますが、再帰関数を使用する場合は関数に判定条件を追加する必要があります。関数本体 to 再帰呼び出しを続行する必要があるかどうかを判断し、条件が満たされると、関数の再帰呼び出しは終了します。

PHPでの再帰関数は何を意味しますか

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

再帰関数は自己呼び出し関数です。つまり、関数は関数本体内で直接的または間接的に自分自身を呼び出します。なお、再帰関数を使用する場合、通常は関数本体に再帰呼び出しを続行するかどうかの判定条件を付け、条件が成立した場合に関数の再帰呼び出しを終了します。

再帰関数の最大の利点は、プログラム内の複雑で反復的な手順を簡素化し、この機能を使用してより複雑な操作を実行できることです。たとえば、リスト、動的ツリー メニュー、ディレクトリ トラバーサルなどの操作です。対応する非再帰関数は効率的ですが、プログラムが難しく、比較的読みにくいです。

再帰的思考

再帰の主な考え方は、比較的複雑な問題 (元の問題) を類似の問題に変換することです。小さな問題(部分問題)を解決し、それぞれの小さな問題が解決されれば、最終的な大きな問題も自然に解決されます。

再帰的手法では、問題解決プロセスで必要となる複数の繰り返し計算を記述するためのプログラムが少量だけで済むため、プログラム コードの量が大幅に削減されます。もちろん、再帰関数は完璧ではなく、再帰メソッドの関数が効率的に動作しないという欠点もあります。

PHP の再帰レベルの最大数は無制限ではありません。これはプログラムのメモリ制限に関連しています。PHP5 ではプログラムがデフォルトで 128M のメモリを使用できるため、再帰レベルの数が多すぎる場合は、大きい場合、128M メモリが使い果たされると、プログラムは致命的なエラーを生成して終了します。 PHP7 ではデフォルトで 256M のメモリが許可されます。

PHP で許可される最大メモリは、php.ini ファイルを次のように変更することで変更できます。

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit=256M

PHP での再帰

#再帰を実現するには、次の 2 つの条件を満たす必要があります。

  • 副問題は元の問題と同じで、より単純なものでなければなりません。

  • 自分自身を無制限に呼び出すことはできません。出口が必要であり、非再帰的な状況処理に簡素化できます。

例 1: 再帰関数を使用して n の階乗を実装します。

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);   
function factorial($num){
    //确定递归函数的出口
    if($num == 1){
        return 1;
    }else{
        return $num*factorial($num - 1);
    }
}
echo &#39;15 的阶乘是:&#39;.factorial(15);
?>

実行結果は次のとおりです。

PHPでの再帰関数は何を意味しますか

例 2: フィボナッチ数列を計算します。

フィボナッチ数列は次のとおりです:

1、1、2、3、5、8、13、21、34、...

実装コードは次のとおりです:

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);   
function demo($num){
    //
    if($num == 1 || $num == 2){
        return 1;
    }else{
        return demo($num - 1) + demo($num - 2);
    }
}
echo &#39;数列第 10 位是:&#39;.demo(10);
?>

実行結果は次のとおりです:

PHPでの再帰関数は何を意味しますか推奨学習: 「

PHP ビデオ チュートリアル

」 》

以上がPHPでの再帰関数は何を意味しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。