ホームページ > バックエンド開発 > PHPチュートリアル > 上記の再帰について、最後の $a の値が 0 になるのはなぜですか? 1じゃないの?

上記の再帰について、最後の $a の値が 0 になるのはなぜですか? 1じゃないの?

WBOY
リリース: 2016-06-13 13:23:14
オリジナル
1142 人が閲覧しました

次の再帰について、最後の $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 
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート