乙個函式在內部呼叫自己,那麼這個函式是遞迴函式。遞迴會反覆使用本身,每遞迴一次,越接近最終的值。當乙個問題可以由許多相似的小問題解決, 可以考慮使用遞迴函式。隨著遞迴的深入,問題規模相比上次都應所減小。return函式本身的方法保證了遞迴的持續進行,但是如果沒有明確的結束條件,遞迴會無限進行下去。所以當已經到了問題解決的程度, 應該告訴函式結束遞迴,這就需要明確的結束條件。
常見的兩個遞迴例子:求和、求階乘n!
求和:sum=n+n(n-1)+…+1
def
sum(n)
:if n >0:
return n+
sum(n-1)
else
:return
0
new_sum =
sum(10)
print
(new_sum)
#output
55
求階乘:n!=1x2x3…xn
def
factorial
(n):
if n ==1:
return
1else
:return n*factorial(n-1)
new_sum = factorial(5)
print
(new_sum)
#output
120
使用遞迴函式需要注意遞迴次數預設限制為1000,如果遞迴次數較多會導致棧溢位的問題
比如
def
sum(n)
:if n >0:
return1+
sum(n-1)
else
:return
0new_sum =
sum(
1000
)print
(new_sum)
會報recursionerror: maximum recursion depth exceeded in comparison的錯誤
解決問題的辦法是修改可遞迴的次數
import sys
sys.setrecursionlimit(
1500
)#可遞迴次數修改為1500
defsum
(n):
if n >0:
return1+
sum(n-1)
else
:return
0new_sum =
sum(
1000
)print
(new_sum)
#output
1000
修改遞迴次數時需要注意,修改可遞迴次數為1500,遞迴深度到不了1500,在1400左右。預設可遞迴次數為1000,遞迴深度也到不了1000,到992左右 遞迴函式及尾遞迴
自己呼叫自己的函式,一去一回就是遞迴函式 示例一 def digui n print n,1 if n 0 digui n 1 print n,2 digui 5 示例二 階乘 num 1 def func n global num if n 0 func n 1 num n return num ...
python遞迴函式例項 python遞迴函式
python遞迴函式 什麼是遞迴?遞迴,就是在函式執行中自己呼叫自己 示例 def recursion n 定義遞迴函式 print n 列印n recursion n 1 在函式的執行種呼叫遞迴 recursion 1 呼叫函式 這個函式在不斷的自己呼叫自己,每次呼叫n 1,看下執行結果 998t...
python靜態遞迴函式 python遞迴函式
一 遞迴的定義 1.什麼是遞迴 在乙個函式裡在呼叫這個函式本身 2.最大遞迴層數做了乙個限制 997,但是也可以自己限制 1 deffoo 2 print n 3 n 1 4 foo n 5 foo 1 驗證997 3.最大層數限制是python預設的,可以做修改,但是不建議你修改。因為如果用997...