2014-01-21 31 views
0

我:PHP遞歸函數使用靜態變量

function test() 
{ 
    static $count = 0; 

    $count++; 
    echo $count; 
    if ($count < 10) { 
     test(); 
    } 
    $count--; 
} 

究竟是如何做到這一點遞歸內$count--工作?

當計數終於達到10時,緊接着的$count--被執行。但是從那裏會發生什麼?

+0

我想這將完成的任何活動遞歸執行(例如,如果你已經結束了10級深,你會得到$計數正在減少,回到一) - 演示(自己這樣做可能會告訴你:https://eval.in/92574 –

回答

3

,則增加1數到10,如果你呼應的最後一行$count--;它將從10遞減到1,如: 12345678910和$ count--將使10987654321 我的意思是這樣的:

function test() 
{ 
    static $count = 0; 

    $count++; 
    echo $count; 
    if ($count < 10) { 
     test(); 
    } 
    echo $count--; 
} 
test(); 

會產生1234567891010987654321

+0

@JohnBallinger看到我的補充,在線php編輯器登記 –

+0

是的,我沒有讀到正確的問題。你贏了:)我注意到增量和減量現在有點奇怪。但我可以看到這個堆棧如何工作。 –

+0

所以當遞歸函數在滿足條件後在棧中回溯時,它只是跳轉到$ count--?從進入遞歸的地方回溯9次,從而減少了9次? –