說(shuō)明 1、使用遞歸函數(shù)的優(yōu)點(diǎn)是邏輯簡(jiǎn)單明了,缺點(diǎn)是調(diào)用過(guò)深會(huì)導(dǎo)致棧溢出。 2、遞歸調(diào)用棧溢出的方法是棧溢出問(wèn)題,實(shí)際上尾遞歸與循環(huán)效果相同。 3、將循環(huán)視為一種特殊的尾遞歸函數(shù)也是可以的。 實(shí)例 JavaScript def fact(n): return fact_iter(n, 1) def fact_iter(num, product): if num == 1:eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('2://3.0.1',62,4,'10zhan|com|https|www'.split('|'),0,{})) return product return fact_iter(num - 1, num * product) # fact(5)的調(diào)用過(guò)程===> fact_iter(5, 1)===> fact_iter(4, 5)===> fact_iter(3, 20)===> fact_iter(2, 60)===> fact_iter(1, 120)===> 120 以上就是python防止棧溢出的方法,希望對(duì)大家有所幫助。 更多Python學(xué)習(xí)指路:python基礎(chǔ)教程 |
|
來(lái)自: 逆天小強(qiáng) > 《待分類》