1. 程式人生 > >python之遞歸

python之遞歸

層次 規模 print 每次 CA n) factorial 保存 執行

遞歸就是函數內在調用這個函數

遞歸的特性:

1.必須有一個明確的結束條件,要不然就會變成死循環了,最終撐爆系統。

2.每次進入更深一層遞歸時,問題規模相比上次遞歸都應有減少。

3.遞歸執行效率不高,遞歸層次過多會導致棧溢出。

例子:遞歸

def factorial(n):
  if n==1:
    return 1
  return n*factorial(n-1)

print(factorial(4))#輸出4的階乘

尾遞歸優化:

def cal(n):
  print(n)
  return cal(n+1)
cal()

此時棧中不會保存每次遞歸時執行的函數的變量和內容,所以一直遞歸棧也不會爆滿。

python之遞歸