ホームページ > バックエンド開発 > PHPチュートリアル > php再帰関数の3つの実装方法とデジタル累積の実装方法、php recursion_PHPチュートリアル

php再帰関数の3つの実装方法とデジタル累積の実装方法、php recursion_PHPチュートリアル

WBOY
リリース: 2016-07-13 09:44:50
オリジナル
796 人が閲覧しました

PHP再帰関数の3つの実装方法とデジタル累積、PHP再帰の実装方法

再帰関数は、プログラミングでよく使われる関数の一種で、関数自体を呼び出すことができますが、その前に関数を付ける必要があります。それ以外の場合は、無限呼び出しが発生します。この記事では、3 つの再帰関数の実装方法を示します。1 つ目はパラメーターとして参照を使用し、3 つ目は静的変数を使用します。このような問題を理解するには、グローバル変数、参照、静的変数の理解などの基本的な知識が必要です。また、自分たちの行動範囲を理解する必要もあります。ここではこれ以上ナンセンスではありません。詳細な紹介については以下を参照してください。

最初の方法: パラメータとして参照を使用します

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

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

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

コードをコピーします コードは次のとおりです:
関数テスト($a=0,&$result=array()){
$a++;
if ($a $result[]=$a;
テスト($a,$result);
}
エコー $a;
$result を返します;
}

上記の例は非常に簡単で、判定条件として a を使用し、条件が true の場合、result[] に a を代入し、各再帰によって生成される a は次のようになります。結果配列に追加されます。したがって、この例で生成される $result 配列は Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => になります。 5 [ 5 ] => 6 [6] [7] => 8 [8] => 9 是 この例は比较echo a の値です。

12345678910

だと思っている人も多いと思いますが、実はそうではなく、1098765432です。なぜ?これは、関数が echo a を実行する前に次の関数の再帰を実行しているためです。 など。

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

コードをコピーします

コードは次のとおりです: 関数テスト($a=0,$result=array()){

グローバル $result;

$a++; If ($a $result[]=$a; テスト($a,$result); }

$result を返します;

} 3番目の方法: 静的変数を使用する



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


例を挙げてください:

コードをコピーします

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

関数テスト(){ 静的 $count=0; エコー $count;

$count++;

} テスト(); テスト();

テスト();

テスト(); テスト(); このコードの実行結果は何ですか?
00000
ですか?絶対にありません。
01234
です。まず、初めて
test(), static
を呼び出して
$count
を初期化します。各実行後、
$count
の値は保持され、再度初期化されません。これは、
static を直接無視するのと同じです。 $count= 0

; この文。

つまり、再帰関数に static を適用する効果は想像できます。再帰関数間の「ブリッジ」として使用する必要がある変数を初期化するには、static を使用します。各再帰では、「ブリッジ変数」 の値が保持されます。

コードをコピーします コードは次のとおりです:
関数テスト($a=0){
static $result=array();
$a++;
If ($a $result[]=$a;
テスト($a);
}
$result を返します;
}

まとめ

いわゆる再帰関数は、関数呼び出し自体を処理する方法と、必要な結果が関数間で適切に「受け渡される」ことを保証する方法に焦点を当てています。もちろん、関数間の値の転送を必要としない再帰関数もあります。例:

コードをコピーします コードは次のとおりです:
関数テスト($a=0){
$a++;
If ($a エコー $a;

テスト($a);
}
}

コードの一部を使用して、PHP が再帰関数を使用して数値を累積する方法を示してみましょう。

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

コードをコピーします コードは次のとおりです:
関数の合計 ($count) {
If ($count != 0) :
$count + 合計($count-1)を返します;
エンディフ;
}
$sum = summation(10);
print "合計 = $sum";
?>

上記の内容は、PHP の再帰関数の 3 つの実装方法と数値の累積を実現する方法についての知識です。皆さんの今後の学習に役立つことを願っています。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1044861.html技術記事 PHP 再帰関数の 3 つの実装方法とデジタル累算の実装方法 PHP 再帰関数は、プログラミングでよく使用されるタイプの関数ですが、関数自体を呼び出すことができるのが特徴です。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート