python 遞迴函式及遞迴次數受到限制的解決辦法

2021-10-07 02:14:53 字數 1438 閱讀 7504

乙個函式在內部呼叫自己,那麼這個函式是遞迴函式。遞迴會反覆使用本身,每遞迴一次,越接近最終的值。當乙個問題可以由許多相似的小問題解決, 可以考慮使用遞迴函式。隨著遞迴的深入,問題規模相比上次都應所減小。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...