検索

ホームページ  >  に質問  >  本文

php 関数、結果は予期せぬものです

リーリー
黄舟黄舟2852日前852

全員に返信(7)返信します

  • PHPz

    PHPz2017-05-24 11:36:32

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

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

    このように理解すれば、再帰処理中に関数呼び出しの問題を考慮する必要はありません。 计算 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
  • 伊谢尔伦

    伊谢尔伦2017-05-24 11:36:32

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

    返事
    0
  • 为情所困

    为情所困2017-05-24 11:36:32

    関数は非同期ではないので、 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
  • 世界只因有你

    世界只因有你2017-05-24 11:36:32

    fun 関数が再帰的である場合、$i < 5 が満たされると判断された場合、関数自体を呼び出してスタックにプッシュします。同時に、関数の最後の文である echo $i は実行されません。 ; 再帰呼び出しが $i = 5 に達すると、関数の前のスタック ポイントに戻り、実行を続行します。つまり、関数 echo $i;
    の最後の文を実行して 4 を出力し、最後にスタックにプッシュされた場所に戻り、fun 関数が完全に戻るまで 3 を出力し続けます。
    if ($i < 5) { return fun($i);}に変更すると、23455

    が出力されます

    返事
    0
  • 某草草

    某草草2017-05-24 11:36:32

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

    返事
    0
  • 天蓬老师

    天蓬老师2017-05-24 11:36:32

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

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-05-24 11:36:32

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

    返事
    0
  • キャンセル返事