qq_天蝎的尾巴卍_0
2017-01-11 10:42:27
?function abc($num) {? if($num==1) { return 1; } else { ? return $num*abc($num-1); }? }? echo abc(5); ?//結果為 120;?遞歸的代碼流程具體是怎么走的?
3 回答
已采納

KevenHuang
TA貢獻280條經驗 獲得超233個贊
首先說一下函數的運行,函數的運行是在內存中新開一個棧,然后在棧內運行的,而遞歸就是指在函數內部調用自己,當一個函數在函數內部調用自己,它會立即開辟一個棧,然后運行函數,當然它要有一個遞歸點和遞歸出口,否則函數會無論調用造成死循環,遞歸點為在什么時候需要調用自己,遞歸出口為在什么時候不再調用自己,用一個例子來解釋一下遞歸,就是你的朋友張三向你借錢,你又剛好不夠,你又向你的朋友李四借錢,你的朋友李四錢又不夠,李四又向他的朋友王五借錢,王五的錢夠了,把錢交給李四,李四把錢交給你,你再把錢交給張三,這個過程是連續的,只有最后一個把錢湊夠了才能往回走。遞歸大概就是這樣,遞歸是以空間換時間的,所以遞歸是非常耗內存的。
點擊展開后面5條

- 3 回答
- 1 關注
- 1780 瀏覽
添加回答
舉報
0/150
提交
取消