遞歸函數(shù)是特殊的函數(shù)定義方法
在函數(shù)內(nèi)部繼續(xù)調(diào)用自己
#計算階乘(5!)
factorial =1
for iin range(1, 6):
factorial *= i
print(factorial)
#輸出為120,標(biāo)準(zhǔn)的循環(huán)寫法
#換個思路
def factorial(n):
return? n * factorial(n-1)
print(factorial(5))
[Previous line repeated 996 more times]前一行重復(fù)996次以上
RecursionError: maximum recursion depth exceeded遞歸錯誤:最大遞歸深度
運行無窮無盡输玷,直達嵌套最大深度而被迫終止
----------------------------------------------------------------------------------------------------------
def factorial(n):
if n >1:
return? n * factorial(n -1)
else:
return 1
print(factorial(5))
#輸出120车柠,增加了退出條件
第一次運行factorial 函數(shù)窄绒,n= 5,返回5*factorial(4)
第二次運行factorial函數(shù)沐鼠,n=4,返回4*factorial(3)
第三次運行factorial函數(shù)肝箱,n=3,返回3*factorial(2)
第四次運行factorial函數(shù)摧茴,n=2,返回2*fanctorial(1)
第五次運行factorial函數(shù)绵载,n=1,返回1
回到第四次運行的factorial函數(shù),n=2,返回2*1
回到第三次運行的factorial函數(shù)苛白,n=3,返回3*2*1
回到第二次運行的factorial函數(shù)娃豹,n=4,返回4*3*2*1
回到第一次運行的factorial函數(shù),n=5,返回5*4*3*2*1
建議
遞歸函數(shù)提供了一種簡單有效的代碼邏輯實現(xiàn)方法
從性能上看购裙,遞歸效率不高懂版,而且遞歸的深度有限