如何非递归获取第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
相关产品推荐
相关产品推荐

