php的最大遞迴層數跟程式記憶體限額有關。php
5預設允許乙個程式使用
128m的記憶體,因此當你的遞迴層數過大導致128m記憶體耗盡時,程式會產生乙個致命錯誤並退出。
編輯
php.ini
檔案可以更改
php的最大記憶體使用限制:
; maximumamount of memory a script may consume (128mb)
;
memory_limit= 128m
下邊的小實驗可以驗證php在
128m記憶體配額下執行乙個簡單遞迴程式時,遞迴層級最高可達到
38萬層:
<?php
function re($level)
re(1);
執行後輸出:
now is level380118
now is level380119
now is level380120
php fatalerror: allowed memory size of 134217728bytes exhausted (tried to allocate 130968 bytes) in /root/envir/recusion.php online 8
未知迴圈層數的遞迴處理
最近遇到乙個問題,當你不知道你需要進行幾層迴圈來處理你的資料時,該怎麼辦。例如,你要構建乙個 但是你只得到乙個已經填充好資料的list,卻並不知道需要構建的 是幾行幾列。處理的主要邏輯就是,採用遞迴的方法,遍歷list的下標。閒話不多說,附上 public class testmultiround ...
使用遞迴實現可變迴圈層數
不確定多層迴圈巢狀的簡潔寫法 原創 瀏覽 2451 更新 2014 06 04 11 43 相信我們都寫過2層for迴圈。一旦超過3層迴圈,就會很難看,並且增加很多變數和 for int i 0 i 10 i for int j 0 j 10 j for int k 0 j 10 k 而有時候我們也...
PHP中的函式巢狀層數限制分析
函式巢狀,這個名字有點糾結,也許不太好理解。乙個比較常見的函式巢狀特例 遞迴函式,即函式自己巢狀自己。一直以為在php中不能有太多的函式巢狀,這是因為在以前某些時候不小心用到了遞迴,在遞迴的深度達到100時,即函式巢狀的層數達到100時,程式會報乙個 fatal error。如下示例 複製 如下 f...