|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377......,即从第3项开始,每一项都等于前两项之和,计算500之内的该数列所有项数之和。
- sum = 0
- n = 0
- def fib_loop(n):
- a,b = 0,1
- for i in range(n):
- a,b = b,a+b
- return a
- for i in range(15):
- sum = sum + fib_loop(n-1) + fib_loop(n-2)
- n = n + 1
-
- print(sum)
复制代码
代码求出来的结果是985,但答案是986.
烦请大佬们指正一下如何修改!!
感谢!!
为什么你每次循环要加两项呢。若是你想的是每次加的都是前两项的和,那样你就漏掉了第一项。
你看一下你的程序,sum每次加的内容是什么
- sum = 0
- n = 0
- def fib_loop(n):
- a,b = 0,1
- for i in range(n):
- a,b = b,a+b
- return a
- for i in range(15):
- a=fib_loop(n-1);b=fib_loop(n-2)
- print('%4d%4d%4d\t'%(a,b,a+b))
- sum = sum + fib_loop(n-1) + fib_loop(n-2)
- n += 1
-
- print(sum)
复制代码
第三列是你想sum上加的内容
- 0 0 0
- 0 0 0
- 1 0 1
- 1 1 2
- 2 1 3
- 3 2 5
- 5 3 8
- 8 5 13
- 13 8 21
- 21 13 34
- 34 21 55
- 55 34 89
- 89 55 144
- 144 89 233
- 233 144 377
- 985
复制代码
正确的程序应该是下面这样:
- sum = 0
- def fib_loop(n):
- a,b = 0,1
- for i in range(n):
- a,b = b,a+b
- return a
- for i in range(15):
- sum = sum + fib_loop(i)
-
- print(sum)
复制代码
|
|