You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决RecursionError: maximum recursion depth exceeded in comparison错误?

问题分析

你的代码触发RecursionError的核心原因是递归逻辑形成了无限循环,拆解计算f(5)的过程就能看清:

  1. 计算f(5) → 调用f(4 + f(2)),需要先算f(2)
  2. 计算f(2) → 调用f(1 + f(-1)),其中f(-1)满足n<=0,返回1
  3. 此时f(2)变成调用f(1+1)=f(2),形成无限递归:f(2)持续调用自身,永远触达不到终止条件,最终超过Python默认的递归深度限制(默认1000)
修正方案

从代码结构判断,你大概率是写错了递归式的符号——应该是返回两个递归调用的和,而非把第二个递归的结果作为第一个递归的参数。修正后的代码如下:

def f(n):
    if n <= 0:
        return 1
    else:
        # 将原代码的f(n-1 + f(n-3))改为f(n-1) + f(n-3)
        return f(n-1) + f(n-3)

print(f(5)) # 输出:9
手动验证计算过程

修正后f(5)的计算步骤:

  • f(-1)=1,f(0)=1
  • f(1)=f(0)+f(-2)=1+1=2(f(-2)满足n<=0,返回1)
  • f(2)=f(1)+f(-1)=2+1=3
  • f(3)=f(2)+f(0)=3+1=4
  • f(4)=f(3)+f(1)=4+2=6
  • f(5)=f(4)+f(2)=6+3=9

如果你的原始需求确实是f(n) = f(n-1 + f(n-3)),那这个函数对n≥2的情况都会陷入无限递归,这种逻辑本身不具备可计算性,需要重新设计递归规则。

内容的提问来源于stack exchange,提问作者MrCyman2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:10:34