函數就像一個盒子,將相關的一些功能打包成一個函數,以供調用。函數內部可以調用其他函數,也可以調用這個函數自身。
如果一個函數在內部調用函數自身,那麼這個就是遞歸函數。
我們舉一個簡單的例子。
數學中我們知道100的階乘,100!=1009998...321.
分解開來,100!=10099!,99!=9998!,98!=98*97!...
那麼我們定義一個函數來計算階乘:def fact(n):
return n*fact(n-1)
上面這個函數看起來是一個數字不斷地跟與它小1的數相乘,卻沒有停止的時候。所以我們必須對上述函數進行改造,讓它能在n=1的時候,計算完就停下來。
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
遞歸函數也可以用循環的方式實現。但是遞歸函數邏輯較為簡單。但是在使用遞歸函數的時候,要注意防止遞歸函數調用過多導致棧溢出。
更多技巧請《轉發 + 關注》哦!