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

实现双参数Fibonacci测量算法时遇TypeError:缺少参数p

问题原因与解决方法

问题原因

你的递归调用中遗漏了p参数。函数F定义为接收两个位置参数n和p,但在第8行的递归调用F(n-1)和F(n-p-1)里,只传递了一个参数,导致Python提示缺少必需的p参数。

解决方法

修改递归调用,在每次调用F时都传入p参数:

def F(n, p):
    if n == 0:
        return 0
    elif n <= p+1:
        return n
    return F(n-1, p) + F(n-p-1, p)  # 补充传递p参数

这样调用F(10,1)时,递归过程中每次都会传递p=1,就不会再触发TypeError了。

额外建议

如果p参数在大多数场景下有固定值,可以给它设置默认值,这样调用时可以省略该参数(但递归时仍需传递):

def F(n, p=1):  # 为p设置默认值
    if n == 0:
        return 0
    elif n <= p+1:
        return n
    return F(n-1, p) + F(n-p-1, p)

此时调用F(10)也能正常工作,无需显式传入p=1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:55:21