ホームページ  >  記事  >  バックエンド開発  >  PHP 再帰関数を実装する 3 つの方法、PHP 再帰関数を実装する 3 つの方法_PHP チュートリアル

PHP 再帰関数を実装する 3 つの方法、PHP 再帰関数を実装する 3 つの方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:45:02770ブラウズ

phpで再帰関数を実装する3つの方法、phpで3種類の再帰関数

再帰関数は、私たちがよく使う関数の一種であり、最も基本的な特徴は、関数自体がそれ自体を呼び出すことですが、それは実行する必要があります。自分自身を呼び出す前に 条件付き判断 を実行し、それ以外の場合は無限に呼び出されます。再帰関数を実装するにはどのような方法を使用できますか?この記事では 3 つの基本的な方法を示します。これを理解するには、グローバル変数、参照、静的変数の理解、およびそれらのスコープの理解など、ある程度の基本的な知識が必要です。再帰関数は、無限レベルの分類を解決するための優れた手法でもあります。無限分類に興味がある場合は、PHP を参照して再帰関数を使用して無限分類を実現してください。複雑な真実を平易な言葉で説明することに慣れています。本当に理解できない場合は、マニュアルを参照してください。

パラメータとして参照を使用する

参照がパラメーターであるかどうかに関係なく、まず参照とは何かを理解する必要があります。参照とは、単に、異なる名前を持つ 2 つの変数が同じ記憶アドレスを指していることを意味します。元々、各変数には独自の格納アドレスがあり、代入と削除は独自の方法で行われました。さて、2 つの変数はストレージ アドレスを共有します。

$a=&$b;。これが実際に意味するのは、元のストレージ アドレスに関係なく、$a$b とルームを共有しなければならないということです。したがって、保存されているアドレス値を変更すると、両方の値に影響します。

同じ名前の関数であっても、関数には独自の動作があります。再帰関数は、参照をパラメータとして受け取り、2 つの関数間でデータ共有を形成するためのブリッジになることを考慮します。 2 つの関数は異なるアドレスで動作しているように見えますが、実際には同じメモリ アドレスで動作します。

リーリー

上記の例は非常に単純で、条件がtrueの場合は$aを$result[]に代入し、それぞれが生成した$aを追加します。結果配列 $result への再帰。したがって、この例で生成される $result 配列は

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => となります。 5 [5] => 6 [6] => 8 [8] => 9 この例でさらに興味深いのは、echo $a の値です。 12345678910だと思っている人も多いと思いますが、そうではなく、1098765432です。なぜ?これは、関数が echo $a を実行する前に次の関数の再帰を実行しているためです。 echo $a の実際の実行は、条件 $a

グローバル変数を活用する グローバル変数を使用して再帰関数を完成させてください。

グローバル変数とは何かをよく理解してください。関数内で宣言されたグローバル変数は、同じ名前の外部変数への単なる参照です。変数の

スコープは、この関数の スコープ内にあります。これらの変数の値を変更すると、当然のことながら、同じ名前の外部変数の値も変更されます。ただし、& を使用すると、同じ名前の変数は同じ名前の参照ではなくなります。グローバル変数を使用して再帰関数を実装するために、それほど深いレベルを理解する必要はありません。グローバル変数の本来の見方を維持することで、自然に再帰関数を理解できます。 リーリー

静的変数を使用する

staticはクラスでよく見かけますが、今日では再帰関数で使用します。 static の役割を覚えておいてください: 関数が初めて呼び出されたときのみ 変数を初期化し、 変数の値を保持 します。
例を挙げると:

リーリー このコードの実行結果はどうなるでしょうか? 00000ですか?絶対にありません。 01234です。まず、test() を初めて呼び出して $count

を初期化します。各実行後、

$count の値は保持され、初期化されなくなります。これは、直接無視するのと同じです。 static $count=0; この文。 つまり、再帰関数に static を適用する効果は想像できます。再帰関数間の「ブリッジ」として使用する必要がある変数は、静的を使用して初期化され、「ブリッジ変数」の値は再帰ごとに保持されます。 リーリー

概要

いわゆる再帰関数は、関数呼び出し自体を処理する方法と、必要な結果が関数間で適切に「受け渡される」ことを保証する方法に焦点を当てています。もちろん、関数間の値の転送を必要としない再帰関数もあります。例: リーリー そのような機能に直面しても、それほど心配する必要はありません。ちなみに、変数参照を深く理解していれば、この種の問題を解決するのに大いに役立ちます。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1043452.html技術記事 PHP 再帰関数を実装する 3 つの方法. PHP 再帰関数は、私たちがよく使用する関数の一種ですが、関数自体を呼び出した後で呼び出す必要があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。