ホームページ >バックエンド開発 >PHPの問題 >PHP 再帰関数を学ぶ方法を段階的に教えます

PHP 再帰関数を学ぶ方法を段階的に教えます

醉折花枝作酒筹
醉折花枝作酒筹オリジナル
2021-03-23 09:45:282049ブラウズ

再帰とは、関数が関数本体内でそれ自体を呼び出すことです。再帰関数を実行すると、それ自体が繰り返し呼び出され、そのたびに新しいレベルに入ります。再帰関数には終了条件が必要です。エディターに従って再帰を学びましょう。

PHP 再帰関数を学ぶ方法を段階的に教えます

再帰の考え方は、比較的複雑な問題 (元の問題) を、元の問題に似た小さな問題 (部分問題) に変換して解決することです。小さな問題をひとつひとつ解決していけば、最後の大きな問題も自然と解決していきます。再帰的手法では、問題解決の過程で必要となる複数回の繰り返し計算を記述するプログラムが少量で済むため、プログラムコード量が大幅に削減されます。もちろん、再帰関数は完全ではなく、いくつかの欠点があります。つまり、再帰関数は効率的に動作しません。
PHP の再帰レベルの数は無制限ではありません。これはプログラムのメモリ制限に関連しています。PHP5 ではプログラムが 128M のメモリを使用できるため、再帰レベルの数が超過 128M メモリが使い果たされると、プログラムは致命的なエラーを生成して終了します。 PHP7256M のメモリを使用できます。

再帰関数は、関数内でそれ自体を呼び出します。再帰関数を実行すると、それ自体が繰り返し呼び出され、そのたびに新しいレベルに入ります。再帰関数には終了条件が必要です。関数が壁に遭遇して戻るまで再帰を続ける場合、その壁が終了条件になります。したがって、再帰には終了条件と再帰関係という 2 つの要素が必要です。

注: 関数が呼び出されて実行されると、一時データを保存するためにメモリにスペースが割り当てられ、実行中にデフォルトでは関数間の接続は行われません (静的変数を除く) 、参照渡し、グローバル変数)。内部の変数はデフォルトですべてローカル変数であり、相互に影響を与えません。印象を深めるために例を見てみましょう:

<?php
    function demo($num){
        //
        if($num == 1 || $num == 2){
            return 1;
        }else{
            return demo($num - 1) + demo($num - 2);
        }
    }

    echo &#39;数列第 10 位是:&#39;.demo(10);//数列第 10 位是:55
?>

この例に見覚えはありませんか? これはフィボナッチ数列です。フィボナッチ数列を計算するときは、他の方法を使用した方がまだ優れています。多少難しいですが、再帰関数を使用する方がはるかに効率的です。

推奨チュートリアル: 「PHP ビデオ チュートリアル

以上がPHP 再帰関数を学ぶ方法を段階的に教えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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