- 遞歸調用是通過棧(stack)數據結構實現的,解決遞歸調用棧溢出的方法是尾遞歸優化,事實上尾遞歸和循環的效果是一樣的,所以,把循環看成是一種特殊的尾遞歸函數也是可以的。
- 尾遞歸的方式: 在函數返回的時候,調用自身本身,並且,return語句不能包含表達式。
def fact(n):
return fact_iter(n,1)
def fact_iter(num,product):
if num == 1:
return product
return fact_iter(num-1,num*product)