關於上面這個遞迴,為什麼最後的$a值為0?不是1嗎

來源:互聯網
上載者:User
關於下面這個遞迴,為什麼最後的$a值為0?不是1嗎?
PHP code
';    $a ++;    if ($a < 2) {         Test ();    }    $a --;    return $a;}?>

關於上面這個遞迴,為什麼最後的$a值為0?不是1嗎?
我用Debugger調試了下,發現運行順序為:
順序: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行會運行兩次?

謝謝了!

------解決方案--------------------
這樣的執行循序
你說該之行幾次
4 static $a = 0;//這裡是第4行
5 echo $a . '
';
6 $a ++;
7 if ($a < 2) {
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 code
function Test() {    static $a = 0;//這裡是第4行 ------------------------(1)    echo $a . '
'; $a ++;/*注意這裡非注釋代碼的上下一行 ,return值必定是(1)處的定義*//*如果你想得到預期的返回結果1, if ($a < 2) { return Test (); }*/ $a --; return $a;}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.