は、再帰を証明する以下のコードを考えてみましょう:上記のコードの再帰関数ブロックの最後の文が何回実行されますか?
<?php
function test() {
static $count = 0;
$count++;
echo $count."<br>";
if($count < 10) {
test();
}
echo "Count Value : ".$count--;
}
test();
?>
出力は以下の通りです:
1
2
3
4
5
6
7
8
9
10
Count Value : 10
Count Value : 9
Count Value : 8
Count Value : 7
Count Value : 6
Count Value : 5
Count Value : 4
Count Value : 3
Count Value : 2
Count Value : 1
私はecho "Count Value : ".$count--;
すなわち機能test()
の最後のコード文が一回だけ時に実行されます期待しましたif条件は$count = 10;
にfalseを返し、すべてが終了します。
しかし、予期しないことに、変数$count
の値が小さくなるにつれて10回実行されています。私はそれがどうなっているのか理解していないのですか?予期せずここでコードフローがどのように操作されるのですか?
if条件内で再帰関数呼び出しが行われるため、に対して、後でどのように呼び出されるのですか? if条件に失敗しても、さらに10回ですか?
私に説明してください。
注:私は他に追加することを忘れていないし、欲しくない。最後のステートメントがなぜ印刷されたのか、そしてどのように印刷されるのかを説明するだけです。 1〜10の範囲であり、if条件の失敗後のみである。 if条件がtrueを返すと、実行されませんでした。どうやって?
**他** 'エコー「カウント値:」$カウント - ;関数の' – splash58
実行はresursiveコールの時点では壊れません。残りのコードは – splash58
@ splash58を返した後に実行されます。私は他のものを追加するのを忘れていません。私はそれを望んでいません。最後のステートメントがなぜ印刷されたのか、そしてどのように印刷されるのかを説明するだけです。 1〜10の範囲であり、if条件の失敗後のみである。 if条件がtrueを返すと、実行されませんでした。どうやって? – user2839497