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

如何非递归获取第n个斐波那契数?需修正代码仅输出目标值

如何让非递归斐波那契程序只输出第n项结果?

我想用非递归方式获取第n个斐波那契数,写了下面的代码,但程序会输出所有中间结果,我需要只展示第n个斐波那契数。

我的代码:

fib1 = 1
fib2 = 1
n = int(input('N ='))
for i in range(2,n):
    c = fib1 + fib2
    fib1 = fib2
    fib2 = c
    print(c)

当前输出(输入10时):

N =
>>> 10
2
3
5
8
13
21
34
55

解决方案:

问题根源是print(c)放在了循环内部,每次迭代都会打印当前计算的中间值。只需要将打印语句移到循环外部,同时处理n=1、n=2的边界情况即可。

修改后的代码:

fib1 = 1
fib2 = 1
n = int(input('N ='))
if n <= 2:
    print(fib2)
else:
    for i in range(2, n):
        c = fib1 + fib2
        fib1 = fib2
        fib2 = c
    print(fib2)

说明:

  • 当n≤2时,斐波那契数的前两项都是1,直接输出初始值即可,无需进入循环。
  • 循环结束后,fib2存储的就是第n个斐波那契数,此时执行一次打印即可得到目标结果。

测试输入10时,输出为55,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:01:06