PHP 再帰関數(shù)を?qū)g裝する 3 つの方法、PHP 再帰関數(shù)を?qū)g裝する 3 つの方法_PHP チュートリアル
Jul 13, 2016 am 09:45 AMphpで再帰関數(shù)を?qū)g裝する3つの方法、phpで3種類の再帰関數(shù)
再帰関數(shù)は、私たちがよく使う関數(shù)の一種であり、最も基本的な特徴は、関數(shù)自體がそれ自體を呼び出すことですが、それは実行する必要があります。自分自身を呼び出す前に 條件付き判斷 を?qū)g行し、それ以外の場合は無限に呼び出されます。再帰関數(shù)を?qū)g裝するにはどのような方法を使用できますか?この記事では 3 つの基本的な方法を示します。これを理解するには、グローバル変數(shù)、參照、靜的変數(shù)の理解、およびそれらのスコープの理解など、ある程度の基本的な知識が必要です。再帰関數(shù)は、無限レベルの分類を解決するための優(yōu)れた手法でもあります。無限分類に興味がある場合は、PHP を參照して再帰関數(shù)を使用して無限分類を?qū)g現(xiàn)してください。複雑な真実を平易な言葉で説明することに慣れています。本當(dāng)に理解できない場合は、マニュアルを參照してください。
パラメータとして參照を使用する
參照がパラメーターであるかどうかに関係なく、まず參照とは何かを理解する必要があります。參照とは、単に、異なる名前を持つ 2 つの変數(shù)が同じ記憶アドレスを指していることを意味します。元々、各変數(shù)には獨(dú)自の格納アドレスがあり、代入と削除は獨(dú)自の方法で行われました。さて、2 つの変數(shù)はストレージ アドレスを共有します。$a=&$b;。これが実際に意味するのは、元のストレージ アドレスに関係なく、$a は $b とルームを共有しなければならないということです。したがって、保存されているアドレス値を変更すると、両方の値に影響します。
同じ名前の関數(shù)であっても、関數(shù)には獨(dú)自の動作があります。再帰関數(shù)は、參照をパラメータとして受け取り、2 つの関數(shù)間でデータ共有を形成するためのブリッジになることを考慮します。 2 つの関數(shù)は異なるアドレスで動作しているように見えますが、実際には同じメモリ アドレスで動作します。
リーリー
上記の例は非常に単純で、條件がtrueの場合は$aを$result[]に代入し、それぞれが生成した$aを追加します。結(jié)果配列 $result への再帰。したがって、この例で生成される $result 配列はArray ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => となります。 5 [5] => 6 [6] => 8 [8] => 9 この例でさらに興味深いのは、echo $a の値です。 12345678910だと思っている人も多いと思いますが、そうではなく、1098765432です。なぜ?これは、関數(shù)が echo $a を?qū)g行する前に次の関數(shù)の再帰を?qū)g行しているためです。 echo $a の実際の実行は、條件 $a
グローバル変數(shù)を活用する グローバル変數(shù)を使用して再帰関數(shù)を完成させてください。
グローバル変數(shù)とは何かをよく理解してください。関數(shù)內(nèi)で宣言されたグローバル変數(shù)は、同じ名前の外部変數(shù)への単なる?yún)⒄栅扦?。変?shù)のスコープは、この関數(shù)の スコープ內(nèi)にあります。これらの変數(shù)の値を変更すると、當(dāng)然のことながら、同じ名前の外部変數(shù)の値も変更されます。ただし、& を使用すると、同じ名前の変數(shù)は同じ名前の參照ではなくなります。グローバル変數(shù)を使用して再帰関數(shù)を?qū)g裝するために、それほど深いレベルを理解する必要はありません。グローバル変數(shù)の本來の見方を維持することで、自然に再帰関數(shù)を理解できます。 リーリー
靜的変數(shù)を使用する
staticはクラスでよく見かけますが、今日では再帰関數(shù)で使用します。 static の役割を覚えておいてください: 関數(shù)が初めて呼び出されたときのみ 変數(shù)を初期化し、 変數(shù)の値を保持 します。
例を挙げると:
リーリー このコードの実行結(jié)果はどうなるでしょうか? 00000ですか?絶対にありません。 01234です。まず、test() を初めて呼び出して $count
を初期化します。各実行後、$count の値は保持され、初期化されなくなります。これは、直接無視するのと同じです。 static $count=0; この文。 つまり、再帰関數(shù)に static を適用する効果は想像できます。再帰関數(shù)間の「ブリッジ」として使用する必要がある変數(shù)は、靜的を使用して初期化され、「ブリッジ変數(shù)」の値は再帰ごとに保持されます。 リーリー
概要いわゆる再帰関數(shù)は、関數(shù)呼び出し自體を処理する方法と、必要な結(jié)果が関數(shù)間で適切に「受け渡される」ことを保証する方法に焦點(diǎn)を當(dāng)てています。もちろん、関數(shù)間の値の転送を必要としない再帰関數(shù)もあります。例: リーリー そのような機(jī)能に直面しても、それほど心配する必要はありません。ちなみに、変數(shù)參照を深く理解していれば、この種の問題を解決するのに大いに役立ちます。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

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

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

再帰関數(shù)のパフォーマンスを最適化するには、次の手法を使用できます。 末尾再帰を使用する: 再帰呼び出しを関數(shù)の最後に配置して、再帰オーバーヘッドを回避します。メモ化: 計(jì)算の繰り返しを避けるために、計(jì)算結(jié)果を保存します。分割統(tǒng)治法: 問題を分解し、サブ問題を再帰的に解決して効率を向上させます。

Python は非常に強(qiáng)力なプログラミング言語であり、多くのプログラマーが主要なプログラミング言語として Python を選択しています。ただし、コード內(nèi)で関數(shù)のネストが多すぎると、プログラムの保守と理解が困難になる可能性があります。この記事では、Python コードでの過剰な関數(shù)のネスト エラーを解決する方法を説明します。関數(shù)のネストの簡単な説明 関數(shù)のネストとは、関數(shù)の本體內(nèi)で別の関數(shù)を定義するプロセスを指します。関數(shù)をネストすると、プログラムの構(gòu)造がより明確になり、コードが読みやすく、保守しやすくなります。ただし、ネストされた関數(shù)が多すぎると、コード構(gòu)造が過度に複雑になる可能性があります。

C++ 再帰関數(shù)の終了條件は次のとおりです。 ベースライン條件: 関數(shù)が結(jié)果を直接返すことができる狀態(tài)に達(dá)したかどうかを確認(rèn)し、通常は特定の條件またはパラメーター値がしきい値を満たすかどうかを判斷します。再帰終了條件: ベースライン條件の代替または追加で、再帰の深さを追跡するか最大再帰の深さ制限を設(shè)定することによって、一定回數(shù)の再帰呼び出し後に関數(shù)が停止するようにします。

ここにディレクトリがあります。私たちのタスクは、ディレクトリ內(nèi)のすべてのファイルとサブディレクトリを一覧表示する C プログラムを作成することです。ディレクトリは、一連のファイルが保存される場所/領(lǐng)域/場所です。サブディレクトリはルート ディレクトリ內(nèi)のディレクトリであり、ルート ディレクトリには別のサブディレクトリを持つことができます。 C プログラミング言語では、ディレクトリ內(nèi)のすべてのファイルとサブディレクトリを簡単に一覧表示できます。次のプログラムは、ディレクトリ內(nèi)のすべてのファイルとサブディレクトリを一覧表示する方法を示しています。 // ディレクトリ內(nèi)のすべてのファイルとサブディレクトリを一覧表示する C プログラムの例 ライブ デモンストレーション #include<stdio.h>#include<dirent.h>intmain(void){ &am

Golang では、再帰は関數(shù)がそれ自體を呼び出す方法です。階乗やフィボナッチ數(shù)列の計(jì)算など、多くの問題は再帰関數(shù)を使用して解決できます。ただし、再帰関數(shù)を記述する場合は、いくつかの點(diǎn)に注意する必要があります。そうしないと、プログラム エラーが発生する可能性があります。この記事では、開発者がより安定した信頼性の高い再帰関數(shù)を作成できるように、Golang の再帰関數(shù)の詳細(xì)を紹介します。基本的な狀況の処理 再帰関數(shù)を作成するときは、まず基本的な狀況、つまり再帰関數(shù)の終了條件を考慮する必要があります。陽性がない場合

再帰関數(shù)は、ツリー狀のデータ構(gòu)造を探索するための検索アルゴリズムで使用されます。深さ優(yōu)先検索ではスタックを使用してノードを探索しますが、幅優(yōu)先検索ではキューを使用してレイヤーごとに検索します。ファイルの検索などの実際のアプリケーションでは、再帰関數(shù)を使用して、指定されたディレクトリ內(nèi)の特定のファイルを検索できます。

末尾再帰最適化戦略は、末尾再帰呼び出しをループに変換することで関數(shù)呼び出しスタックの深さを効果的に削減し、スタック オーバーフローを防ぎます。最適化戦略には以下が含まれます。 末尾再帰の検出: 関數(shù)內(nèi)に末尾再帰呼び出しがあるかどうかを確認(rèn)します。関數(shù)をループに変換する: 末尾再帰呼び出しの代わりにループを使用し、スタックを維持して中間狀態(tài)を保存します。

Go言語で再帰関數(shù)を使用して階乗を?qū)g裝するにはどうすればよいですか?階乗は、負(fù)でない整數(shù) n に、それより小さい 1 までのすべての正の整數(shù)を乗算する數(shù)學(xué)の一般的な計(jì)算です。たとえば、5 の階乗は 5! と表現(xiàn)でき、54321=120 と計(jì)算されます。コンピューター プログラミングでは、階乗計(jì)算を?qū)g裝するために再帰関數(shù)をよく使用します。まず、再帰関數(shù)の概念を理解する必要があります。再帰関數(shù)とは、関數(shù)の定義內(nèi)で関數(shù)自體を呼び出すプロセスを指します。問題を解決するとき、再帰関數(shù)は継続的に実行されます。
