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

Python实现斐波那契序列递归函数返回空结果问题求助

问题原因分析
  • 递归调用未返回结果:你在函数内部执行fibonacci(n-1, sequence, originalN)后没有将该调用的结果返回,仅最深层的递归分支产生了返回值,外层函数均无返回值,最终输出为None。
  • 可变默认参数陷阱:Python的函数默认参数在函数定义阶段初始化,而非每次调用时重新生成。你将可变对象[0,1]设为sequence的默认值,多次调用函数时会复用同一个列表,累积之前的调用结果,导致非预期输出。
  • 计数与切片逻辑不匹配:当前终止条件为n<=0时返回sequence[:-2],加上初始列表已经包含2个元素,递归计数规则和「返回前n个斐波那契数」的需求不匹配,即便解决返回值问题,得到的列表长度也不符合要求。
修正后的代码
def fibonacci(n, sequence=None):
    # 每次调用重新初始化序列,规避可变默认参数问题
    if sequence is None:
        sequence = [0, 1]
    # 列表长度达到n时直接返回对应切片
    if len(sequence) >= n:
        return sequence[:n]
    next_value = sequence[-1] + sequence[-2]
    sequence.append(next_value)
    # 返回递归调用结果
    return fibonacci(n, sequence)

print(fibonacci(10))

运行后输出前10项斐波那契序列:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 18:27:02