鍍金池/ 問(wèn)答/PHP/ php遞歸輸出問(wèn)題。

php遞歸輸出問(wèn)題。

function test()
{

static $count = 0;

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

}
test();
這段代碼的輸出為123456789109876543210,前面輸出1-109我可以想得通,但是后面輸出的8-0是怎么輸出的,按照我的想法,應(yīng)該是輸出123456789109就結(jié)束了,并沒(méi)有循環(huán)來(lái)執(zhí)行$count--;echo $count;的動(dòng)作???請(qǐng)問(wèn)我哪里錯(cuò)了,謝謝,我新手,大佬莫怪

回答
編輯回答
忘了我

直接跟著代碼的思路邏輯一遍遍在腦海想想就知道答案的了。當(dāng)你小于 10 的時(shí)候都遞歸運(yùn)行代碼,每次運(yùn)行都會(huì)自增后輸出,直到 $count < 10 不能滿(mǎn)足,并執(zhí)行自減輸出。這會(huì)也即 9 進(jìn)入 test() 自增為 10 ,然后自減。但是你別往了,因?yàn)槟愕拇a是遞歸進(jìn)來(lái)的,它還要一層層地出去,你進(jìn)來(lái)多少層就出去多少層,因?yàn)槟闵厦孀栽鍪且淮危旅孀詼p也是一次,所以,最終結(jié)果會(huì)和開(kāi)始一樣的。

2017年8月27日 06:57
編輯回答
有點(diǎn)壞

調(diào)用另一個(gè)函數(shù)時(shí),當(dāng)前函數(shù)暫停并處于未完成狀態(tài)。該函數(shù)的所有變量的值都還在內(nèi)存中。執(zhí)行完調(diào)用函數(shù)后,回到當(dāng)前函數(shù),并從離開(kāi)的地方開(kāi)始接著往下執(zhí)行。

摘自:https://hellowac.github.io/pr...

2018年3月20日 17:05