再帰関数、再帰は単なる名前であり、再帰関数の規定は次のとおりです: 関数本体は関数自体を呼び出します。
この章の学習プロセスでは、ある程度の深い思考と理解が必要ですが、どうしても思考が追いつかない場合は、学習せずにこの章を飛ばしても問題ありません。
実際の作業では、再帰は便利ですが、使用量はそれほど多くないからです。再帰は実際の作業で主に使用されるのは、ファイルやフォルダーを操作するときです。
解決策:
あなたの思考がこの章に追いつかない場合は、このブロックの原理を直接理解し、既製のファイルおよびフォルダーの処理関数またはファイル処理クラスを使用できます。
考え方の盲点についてお話します:
1. コードは上から下に実行され、すべてのコードには exit などのストップ文字が含まれず、関数は完了する必要があります。
2. 関数が関数 A から関数 B にジャンプする場合、関数 A の残りのコードを実行する前に関数 B を実行する必要があります。
3. 再帰関数は実行を完了でき、終了条件がなければなりません。そうでない場合、関数は無限ループに制限されます。関数はそれ自体を永久に実行します。
それを理解するためにコードを書いてみましょう:
<?php $num = 10; //调用一次函数A(); A($num); function A( $arg ){ echo $arg; //在函数A里面去,跑去执行函数B去了 B($arg); echo '我们需要不断的努力,努力到上天都为我们感动'; echo $arg.'<br />'; } function B( $number ){ echo $number; echo '俺是狗蛋,执行完了<br />'; } ?>
上記の例を通して、次のことが分かります:
1. 関数 A の実行の途中で、関数 B を実行するために走りました
2. 関数 B を実行した後、最初に表示されるのは、「私は犬です。処刑は終わりました」、次に表示されるのは、「神が私たちに感動するまで、私たちは一生懸命働き続ける必要があります」です
3. これは、私たちがいわゆる盲点であることを証明しています内容を考えると、コードは上から下まで実行され、コードは完全に実行される必要があります。
簡単な再帰コードを書いて、関数自体を呼び出してみましょう。
<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内调用了dg自己哟 dg($n); }else{ echo '--------------'; } echo '俺是狗蛋,俺还没执行' . $n . '<br />'; } ?>
表示された結果は何だと思いますか?なぜこんなことになっているのでしょうか?
慎重に推論してみましょう:
1. 初めて dg() が呼び出されるとき、数値 $n = 2 が dg に渡され、最初に 2 が表示されます
2. その後、$n - 1 $n の値が表示されますorder to 1
3. 次に、$n が 0 より大きいかどうかを判断します。$n は 0 より大きいはずなので、自分で再帰を呼び出して、自分で再度実行します。
4. 独自の dg() を 2 回目に実行すると、「私は犬です、まだ実行していません」というメッセージが表示されます。 $n はまだ実行されていません。実行が完了するまで待ってから再度実行してください
';