python如何防止棧溢出
說明
使用遞歸函數(shù)的優(yōu)點(diǎn)是邏輯簡單清晰,缺點(diǎn)是過深的調(diào)用會(huì)導(dǎo)致棧溢出。
1、調(diào)用棧溢出的方法是通過尾遞歸優(yōu)化,事實(shí)上尾遞歸和循環(huán)的效果是一樣的。
2、把循環(huán)看成是一種特殊的尾遞歸函數(shù)也是可以的。
實(shí)例
deffact(n):
returnfact_iter(n,1)
deffact_iter(num,product):
ifnum==1:
returnproduct
returnfact_iter(num-1,num*product)
#fact(5)的調(diào)用過程
===>fact_iter(5,1)
===>fact_iter(4,5)
===>fact_iter(3,20)
===>fact_iter(2,60)
===>fact_iter(1,120)
===>120
以上就是python防止棧溢出的方法,希望對大家有所幫助。更多Python學(xué)習(xí)教程請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。