再帰関数は、私たちがよく使う関数の一種で、最も基本的な特徴は、関数がそれ自体を呼び出すことですが、それを呼び出す前に条件付きで判定する必要があり、そうしないと無限に呼び出され続けます。再帰関数を実装するにはどのような方法を使用できますか?この記事では 3 つの基本的な方法を示します。これを理解するには、グローバル変数、参照、静的変数の理解、およびそれらのスコープの理解など、ある程度の基本的な知識が必要です。再帰関数は、無限レベルの分類を解決するための優れた手法でもあります。無限分類に興味がある場合は、PHP を参照して再帰関数を使用して無限分類を実現してください。複雑な真実を平易な言葉で説明することに慣れています。本当に理解できない場合は、マニュアルを参照してください。
パラメータとして参照を使用する
参照がパラメータであるかどうかに関係なく、まず参照とは何かを理解する必要があります。参照とは、単に、異なる名前を持つ 2 つの変数が同じ記憶アドレスを指していることを意味します。元々、各変数には独自の格納アドレスがあり、代入と削除は独自の方法で行われました。さて、2 つの変数はストレージ アドレスを共有します。 $a=&$b;。これが実際に意味するのは、元のストレージ アドレスに関係なく、$a は $b とルームを共有しなければならないということです。したがって、保存されているアドレス値を変更すると、両方の値に影響します。
関数は、同じ名前の関数であっても、本来は独自の処理を行います。再帰関数は、参照をパラメータとして受け取り、2 つの関数間でデータ共有を形成するためのブリッジになることを考慮します。 2 つの関数は異なるアドレスで動作しているように見えますが、実際には同じメモリ アドレスで動作します。
<span>function</span> test(<span>$a</span>=0,&<span>$result</span>=<span>array</span><span>()){ </span><span>$a</span>++<span>; </span><span>if</span> (<span>$a</span>) { <span>$result</span>[]=<span>$a</span><span>; test(</span><span>$a</span>,<span>$result</span><span>); }<br>echo $a; </span><span>return</span><span>$result</span><span>; }</span>
上記の例は非常に単純で、条件が true の場合は $aArray ( [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グローバル変数を使用する
グローバル変数を使用して再帰関数を完成させます。グローバル変数とは何かを必ず理解してください。関数内で宣言されたグローバル変数は、同じ名前の外部変数への単なる参照です。変数のスコープはこの関数のスコープ内にあります。これらの変数の値を変更すると、当然のことながら、同じ名前の外部変数の値も変更されます。ただし、& を使用すると、同じ名前の変数は同じ名前の参照ではなくなります。グローバル変数を使用して再帰関数を実装するために、それほど深いレベルを理解する必要はありません。グローバル変数の本来の見方を維持することで、自然に再帰関数を理解できます。<span>function</span> test(<span>$a</span>=0,<span>$result</span>=<span>array</span><span>()){ </span><span>global</span><span>$result</span><span>; </span><span>$a</span>++<span>; </span><span>if</span> (<span>$a</span>) { <span>$result</span>[]=<span>$a</span><span>; test(</span><span>$a,$result</span><span>); } </span><span>return</span><span>$result</span><span>; }</span>
静的変数の使用
静的変数はクラスでよく見ますが、今日では再帰関数で使用します。 static の役割を覚えておいてください。関数が最初に呼び出されたときにのみ変数を初期化し、変数値を保持します。
例をあげてください:
<span>function</span><span> test(){ </span><span>static</span><span>$count</span>=0<span>; </span><span>echo</span><span>$count</span><span>; </span><span>$count</span>++<span>; } test(); test(); test(); test(); test();</span>このコードの実行結果は何ですか? 00000ですか?絶対にありません。 01234です。まず、test() を初めて呼び出して
$count を初期化します。各実行後、$count の値は保持され、初期化されなくなります。これは、直接無視するのと同じです。 static $count=0; この文。
つまり、再帰関数に static を適用する効果は想像できます。再帰関数間の「ブリッジ」として使用する必要がある変数は、静的を使用して初期化され、「ブリッジ変数」の値は再帰ごとに保持されます。<span>function</span> test(<span>$a</span>=0<span>){ </span><span>static</span><span>$result</span>=<span>array</span><span>(); </span><span>$a</span>++<span>; </span><span>if</span> (<span>$a</span>) { <span>$result</span>[]=<span>$a</span><span>; test(</span><span>$a</span><span>); } </span><span>return</span><span>$result</span><span>; }</span>
概要
いわゆる再帰関数は、関数呼び出し自体を処理する方法と、必要な結果を関数間で適切に「転送」できるようにする方法に焦点を当てています。 もちろん、再帰関数もあります。関数間の値の転送を必要としないもの、たとえば:<span>function</span> test(<span>$a</span>=0<span>){ </span><span>$a</span>++<span>; </span><span>if</span> (<span>$a</span>) { <span>echo</span><span>$a</span><span>; test(</span><span>$a</span><span>); } }</span>このような関数に直面しても、それについて心配する必要はありません。ちなみに、変数参照を深く理解していれば、この種の問題を解決するのに大いに役立ちます。
以上、PHP 再帰関数の 3 つの実装方法と関連内容を紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。

PHP多次元アレイの要素の総数を計算することは、再帰的または反復的な方法を使用して行うことができます。 1.再帰的な方法は、アレイを通過し、ネストされた配列を再帰的に処理することによりカウントされます。 2。反復法は、スタックを使用して再帰をシミュレートして深さの問題を回避します。 3. array_walk_recursive関数も実装できますが、手動でカウントする必要があります。

PHPでは、ループの特性は、ループ本体が少なくとも1回実行されることを確認し、条件に基づいてループを続行するかどうかを決定することです。 1)条件付きチェックの前にループ本体を実行します。これは、ユーザー入力検証やメニューシステムなど、操作を少なくとも1回実行する必要があるシナリオに適しています。 2)ただし、do-whileループの構文は、初心者間の混乱を引き起こす可能性があり、不要なパフォーマンスオーバーヘッドを追加する可能性があります。

PHPの効率的なハッシュ文字列は、次の方法を使用できます。1。MD5関数を使用して高速ハッシュを使用しますが、パスワードストレージには適していません。 2。SHA256関数を使用して、セキュリティを改善します。 3. password_hash関数を使用してパスワードを処理して、最高のセキュリティと利便性を提供します。

PHPに配列スライディングウィンドウを実装することは、slidewindowとslidewindowaverage関数によって実行できます。 1. SlideWindow関数を使用して、配列を固定サイズのサブアレイに分割します。 2。各ウィンドウの平均値を計算するには、SlideWindowaverage関数を使用します。 3.リアルタイムのデータストリームの場合、非同期処理と外れ値検出を使用して使用できます。

PHPの__Cloneメソッドは、オブジェクトクローン時にカスタム操作を実行するために使用されます。クローンキーワードを使用してオブジェクトをクローニングする場合、オブジェクトに__クローンメソッドがある場合、メソッドが自動的に呼び出され、クローン型属性をリセットしてクローンオブジェクトの独立性を確保するなど、クローンプロセス中にカスタマイズされた処理を許可します。

PHPでは、GOTOステートメントは、プログラムの特定のタグに無条件にジャンプするために使用されます。 1)複雑なネストされたループまたは条件付きステートメントの処理を簡素化することができますが、2)GOTOを使用すると、コードの理解と維持が困難になる場合があります。3)構造化された制御ステートメントの使用を優先することをお勧めします。全体として、gotoは注意して使用する必要があり、コードの読みやすさと保守性を確保するために、ベストプラクティスに従う必要があります。

PHPでは、組み込み関数、カスタム関数、およびサードパーティライブラリを使用してデータ統計を実現できます。 1)array_sum()やcount()などの組み込み関数を使用して、基本統計を実行します。 2)カスタム関数を記述して、中央値などの複雑な統計を計算します。 3)PHP-MLライブラリを使用して、高度な統計分析を実行します。これらの方法により、データ統計を効率的に実行できます。

はい、PHPの匿名関数は、名前のない関数を参照します。これらは、他の関数へのパラメーターとして、および関数の返品値として渡すことができ、コードをより柔軟で効率的にします。匿名関数を使用する場合、範囲とパフォーマンスの問題に注意を払う必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Dreamweaver Mac版
ビジュアル Web 開発ツール
