php 関数、結果は予期せぬものです
黄舟
黄舟 2017-05-24 11:34:32
0
7
821
リーリー
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(7)
PHPzhong

コールバックプロセスを考慮せずに関数の実装関数を考慮して再帰を理解します 再帰を理解するためにコールバックプロセスを考慮する場合は、
再帰プロセス全体のパラメータと変数を分析し、それらがいつ呼び出されるかを覚えておく必要があります。関数を呼び出してメインの呼び出し関数に戻るのは少し面倒に思えますよく使用されるいくつかの再帰関数の関数については、
:递归求解阶乘 のように詳しく説明されています。 リーリー

関数の機能は次のとおりです:

このように理解すれば、再帰処理中に関数呼び出しの問題を考慮する必要はありません。 计算 n 的阶乘, 函数功能实现就是: n 的阶乘 = n * (n-1)的阶乘問題の関数の場合:

関数の機能は次のとおりです:

(短い文で説明するのは難しいです):
つまり、関数の説明に従って、関数の実行プロセスを取得し、最終的に結果を取得することができます。输入 n,输出 n+1, 如果 n+1<5,执行 fun(n+1),再输出 n+1

  1. の出力結果を実行し、2を出力します。

    fun(1): 输入 1, 输出 2, 2+1<5,执行 fun(2),得到 fun(2)最終出力
    : 2[output(fun(2))]2

  2. 同様に、
  3. 出力結果: 3[Output(fun(3))]3

    fun(2)最終出力
    : 23[Output(fun(3))]32

  4. 同様に、
  5. 出力結果: 4[Output(fun(4))]4

    fun(3)最終出力
    : 234[Output(fun(4))] 432

  6. 実行
  7. 、出力結果: 55

    fun(4): 由于 4+1<5 判断失败, 不执行 fun(5)最終出力
    : 23455432

いいねを押す +0
伊谢尔伦

再帰的に返す場合、この文は逆方向に出力されます

いいねを押す +0
为情所困

関数は非同期ではないので、 fun(1)
2 $i++; echo $i;
3 callback func(2) $i++; echo $i;
4 callback func(3) $i++; ;
5 Callback func(4) $i++; echo $i;
5 Callback func(4) $i++ の後はすでに 5 より大きいため、次の echo $i (下の echo $i of fun(4) )) が実行され、関数全体の実行が終了します)
4 func(4) が実行されるので、一番下の echo $i
3 2 も同じロジックです

いいねを押す +0
世界只因有你

fun 関数が再帰的である場合、$i の最後の文を実行して 4 を出力し、最後にスタックにプッシュされた場所に戻り、fun 関数が完全に戻るまで 3 を出力し続けます。
if ($i < 5) { return fun($i);}に変更すると、23455

が出力されます
いいねを押す +0
某草草

この記事を参照すると、再帰を理解すれば明確になります。 http://www.jianshu.com/p/8bee...

いいねを押す +0
Peter_Zhu

このように考えることができます。この関数が行うことは、前半が i をエコーし​​、後半が i をエコーし​​、i=5 になるまで途中で自分自身への呼び出しが挿入されるということです。これは、i を 5 までエコーするのと同等です。 、そして最初に戻ります。それだけの価値があります。ただ関係を続けてください。

いいねを押す +0
仅有的幸福

皆さんありがとうございます、分かりました

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート