Python运行自定义斐波那契函数无输出,添加print后结果327不符合预期如何解决?
问题排查及修复方案
1. 无输出的原因
你只完成了fibonacci函数的定义,没有主动调用函数,也没有打印函数的返回结果,自然不会有输出,你猜测的缺少print相关逻辑是正确的。
2. 输出327结果错误的原因
你当前的递归斐波那契实现本身是符合逻辑的,属于从第0项开始计数的标准版本:
fibonacci(0) = 0fibonacci(1) = 1fibonacci(2) = 1fibonacci(3) = 2- ...
fibonacci(14) = 377
327并不属于标准斐波那契数列的项,大概率是你调用函数时传入的参数错误,或是print打印的对象不是函数返回值,而是其他无关变量。同时你的实现没有加入参校验,如果传入非正整数也会出现异常结果。
修复后的代码示例
def fibonacci(n): # 新增入参校验,避免非法输入导致异常 if not isinstance(n, int) or n < 0: return "请输入非负整数" if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2) # 主动调用函数并打印返回值,示例为获取第10项斐波那契数 print(fibonacci(10)) # 输出结果为55,符合标准预期
如果需要输出前N项斐波那契数列而非单个数值,推荐用循环实现避免递归深度过高导致栈溢出:
def get_fibonacci_list(length): if length <= 0: return [] res = [0, 1] if length == 1: return [0] for i in range(2, length): res.append(res[-1] + res[-2]) return res print(get_fibonacci_list(10)) # 输出 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
内容的提问来源于stack exchange,提问作者Jag
相关产品推荐
相关产品推荐

