python 递归函数及递归次数受到限制的解决办法

python 递归函数及递归次数受到限制的解决办法

一个函数在内部调用自己,那么这个函数是递归函数。递归会反复使用本身,每递归一次,越接近最终的值。当一个问题可以由许多相似的小问题解决, 可以考虑使用递归函数。随着递归的深入,问题规模相比上次都应所减小。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 1

else:

return n*factorial(n-1)

new_sum = factorial(5)

print(new_sum)

#output

120

使用递归函数需要注意递归次数默认限制为1000,如果递归次数较多会导致栈溢出的问题 比如

def sum(n):

if n > 0:

return 1+sum(n-1)

else:

return 0

new_sum = sum(1000)

print(new_sum)

会报RecursionError: maximum recursion depth exceeded in comparison的错误 解决问题的办法是修改可递归的次数

import sys

sys.setrecursionlimit(1500)#可递归次数修改为1500

def sum(n):

if n > 0:

return 1+sum(n-1)

else:

return 0

new_sum = sum(1000)

print(new_sum)

#output

1000

修改递归次数时需要注意,修改可递归次数为1500,递归深度到不了1500,在1400左右。默认可递归次数为1000,递归深度也到不了1000,到992左右

相关推荐

微粒贷利息怎么算?3分钟搞懂计算公式+5个省钱技巧(上班族必看)
獸人控遊戲庫
365娱乐平台网址

獸人控遊戲庫

06-28 👁️ 8297
【消失的存档】广告过于吓人而被禁播的异类恐怖游戏《死魂曲》