Python简单递归函数出现"maximum recursion depth exceeded"报错求助
解决递归函数无限递归的问题
嘿,我完全懂你现在的困扰!递归函数的核心就是得有终止条件,你现在写的代码里刚好缺了这个关键部分,所以程序会一直不停地调用自己,直到Python的递归栈被撑爆,就出现了maximum recursion depth exceeded这个错误。
咱们来拆解下问题:你的代码是这样的
def half(n): return half(n/2)
每次调用half(n)的时候,它都会计算n/2然后再传给half函数本身,但从来没告诉程序“什么时候可以停下来”——哪怕n已经变成了0.0000000001,它还是会继续调用half(0.00000000005),循环往复没有尽头,自然就触发栈溢出了。
要解决这个问题,你只需要给函数加一个终止条件就行。比如当n小到某个你认为可以接受的阈值(比如小于1e-9,也就是0.000000001)时,就直接返回当前的n,不再继续递归:
def half(n): # 当n足够小时,停止递归并返回当前值 if n <= 1e-9: return n return half(n / 2)
如果你是想严格对应数学上的fn = fn-1/2(初始f₁=1),那这个逻辑就完全对了——每次递归都把前一次的值除以2,直到结果趋近于0时停止。
另外再提个小提醒:递归函数的结构永远是「终止条件 + 递归调用」,少了任何一个都会出问题哦~
内容的提问来源于stack exchange,提问作者gavmross




