次の再帰について、最後の $a の値が 0 になるのはなぜですか? 1じゃないの?
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
<?php
echo Test ();
function Test() {
static $a = 0;//这里是第4行
echo $a . '<br>';
$a ++;
if ($a < 2) {
Test ();
}
$a --;
return $a;
}
?>
ログイン後にコピー
上記の再帰について、最後の $a の値が 0 になるのはなぜですか? 1じゃないの?
デバッガーを使用してデバッグしたところ、実行中のシーケンスは次のとおりであることがわかりました:
シーケンス: 4-5-6-7-8-4-5-6-7-10-11-10-11
$ a 値: 0―0―1―1―1―1―1―2―2―1 ―1 ―0 ―0
最終的な出力結果は
0
1
0
ちょっと聞きたいのですが、なぜ10行目と11行目は2回走っているのでしょうか?
ありがとうございます!
-----解決策---------
このような実行シーケンス
これを何回行う必要がありますか
4 static $a = 0;//これは行 4
5 echo $a '
';
6 $a ++;
7 if ($a 8 Test ();
4 static $a = 0;//これは 4 行目
5 echo $a です。 '
';
6 $a ++;
7 if ($a < 2) {
9 }
10 $a --;
11 return $a ;
9 }
10 $a --;
11 return $a;
------解決策------------------
PHP コード
関数テスト() {
static $a = 0;//これは 4 行目です ------------------------(1)
エコー $a 。 '<br>';
$a++;
/*ここで非コメント コードの上下の行に注意してください。戻り値は (1) の定義である必要があります*/
/*期待される戻り結果 1 を取得したい場合は、
if ($a
ログイン後にコピー