一個static 變數的遞迴

WBOY
發布: 2016-09-08 08:44:09
原創
1831 人瀏覽過

<code class="php"><?php
function test()
{
    static $count = 0;

    echo $count++;
    if ($count < 10) {
        test();
    }
    echo $count--;
}
?></code>
登入後複製
登入後複製

結果:012345678910987654321
前上半的echo $cont++,我能理解,為什麼echo $count--他是從10開始的。按從上到下,++ --不抵消了嗎

回覆內容:

<code class="php"><?php
function test()
{
    static $count = 0;

    echo $count++;
    if ($count < 10) {
        test();
    }
    echo $count--;
}
?></code>
登入後複製
登入後複製

結果:012345678910987654321
前上半的echo $cont++,我能理解,為什麼echo $count--他是從10開始的。按從上到下,++ --不抵消了嗎

這是堆疊的入出順序

if 裡面呼叫了函數, 下面的是執行不了的,直到count>10 函數呼叫結束,後面才能執行。

前10次遞歸是沒有執行echo $count--;的, 因為遞歸調用還沒有結束. 直到$count == 10的時候, 就不再進行遞歸了, 於是一層一層地完成遞歸操作

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板