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

求助:如何修改递归实现的Fibonacci函数使其序列以0开头?

修正后的递归斐波那契函数(以0开头)

你的核心问题是基准条件不符合0开头的序列规则:原函数中n=1和n=2都返回1,对应序列是1,1,2,3...,但目标序列起始为0,1,1,2...,只需调整基准条件即可解决:

def fibonacci(n):
    # 基准条件:n=1返回0,n=2返回1,匹配起始序列0,1
    if n == 1:
        return 0
    elif n == 2:
        return 1
    # 递归逻辑:第n项等于前两项之和
    return fibonacci(n - 1) + fibonacci(n - 2)

n = int(input("n = "))
print(fibonacci(n))

验证示例

  • 输入5:fibonacci(5) = fibonacci(4) + fibonacci(3)
    • fibonacci(4) = fibonacci(3) + fibonacci(2) = 1 + 1 = 2
    • fibonacci(3) = fibonacci(2) + fibonacci(1) = 1 + 0 = 1
    • 最终结果:2 + 1 = 3,符合要求
  • 输入6:fibonacci(6) = fibonacci(5) + fibonacci(4) = 3 + 2 = 5,符合要求

额外优化提示

原生递归会存在大量重复计算(比如计算fibonacci(5)时会重复计算fibonacci(3)),如果需要处理较大的n,可以用记忆化递归减少重复运算:

# 用字典缓存已计算的结果,避免重复递归
memo = {1: 0, 2: 1}

def fibonacci(n):
    if n in memo:
        return memo[n]
    result = fibonacci(n - 1) + fibonacci(n - 2)
    memo[n] = result
    return result

n = int(input("n = "))
print(fibonacci(n))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:45:41