鱼C论坛

 找回密码
 立即注册
查看: 2103|回复: 6

[已解决]斐波那契数列求和题

[复制链接]
发表于 2020-3-17 18:49:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377......,即从第3项开始,每一项都等于前两项之和,计算500之内的该数列所有项数之和。

  1. sum = 0
  2. n = 0
  3. def fib_loop(n):
  4.     a,b = 0,1
  5.     for i in range(n):
  6.         a,b = b,a+b
  7.     return a

  8. for i in range(15):
  9.     sum = sum + fib_loop(n-1) + fib_loop(n-2)
  10.     n = n + 1
  11.    
  12. print(sum)
复制代码


代码求出来的结果是985,但答案是986.
烦请大佬们指正一下如何修改!!
感谢!!
最佳答案
2020-3-17 19:16:45
为什么你每次循环要加两项呢。若是你想的是每次加的都是前两项的和,那样你就漏掉了第一项。
你看一下你的程序,sum每次加的内容是什么
  1. sum = 0
  2. n = 0
  3. def fib_loop(n):
  4.        a,b = 0,1
  5.        for i in range(n):
  6.               a,b = b,a+b
  7.        return a

  8. for i in range(15):
  9.        a=fib_loop(n-1);b=fib_loop(n-2)
  10.        print('%4d%4d%4d\t'%(a,b,a+b))
  11.        sum = sum + fib_loop(n-1) + fib_loop(n-2)
  12.        n += 1
  13.    
  14. print(sum)
复制代码

第三列是你想sum上加的内容
  1.    0   0   0       
  2.    0   0   0       
  3.    1   0   1       
  4.    1   1   2       
  5.    2   1   3       
  6.    3   2   5       
  7.    5   3   8       
  8.    8   5  13       
  9.   13   8  21       
  10.   21  13  34       
  11.   34  21  55       
  12.   55  34  89       
  13.   89  55 144       
  14. 144  89 233       
  15. 233 144 377       
  16. 985
复制代码


正确的程序应该是下面这样:
  1. sum = 0
  2. def fib_loop(n):
  3.        a,b = 0,1
  4.        for i in range(n):
  5.               a,b = b,a+b
  6.        return a

  7. for i in range(15):
  8.        sum = sum + fib_loop(i)
  9.    
  10. print(sum)
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 19:06:53 | 显示全部楼层
sum应该从1开始:
  1. sum = 1
  2. n = 0
  3. def fib_loop(n):
  4.     a,b = 0,1
  5.     for i in range(n):
  6.         a,b = b,a+b
  7.     return a

  8. for i in range(15):
  9.     sum = sum + fib_loop(n-1) + fib_loop(n-2)
  10.     n += 1
  11.    
  12. print(sum)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-17 19:08:34 | 显示全部楼层

感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 19:16:45 | 显示全部楼层    本楼为最佳答案   
为什么你每次循环要加两项呢。若是你想的是每次加的都是前两项的和,那样你就漏掉了第一项。
你看一下你的程序,sum每次加的内容是什么
  1. sum = 0
  2. n = 0
  3. def fib_loop(n):
  4.        a,b = 0,1
  5.        for i in range(n):
  6.               a,b = b,a+b
  7.        return a

  8. for i in range(15):
  9.        a=fib_loop(n-1);b=fib_loop(n-2)
  10.        print('%4d%4d%4d\t'%(a,b,a+b))
  11.        sum = sum + fib_loop(n-1) + fib_loop(n-2)
  12.        n += 1
  13.    
  14. print(sum)
复制代码

第三列是你想sum上加的内容
  1.    0   0   0       
  2.    0   0   0       
  3.    1   0   1       
  4.    1   1   2       
  5.    2   1   3       
  6.    3   2   5       
  7.    5   3   8       
  8.    8   5  13       
  9.   13   8  21       
  10.   21  13  34       
  11.   34  21  55       
  12.   55  34  89       
  13.   89  55 144       
  14. 144  89 233       
  15. 233 144 377       
  16. 985
复制代码


正确的程序应该是下面这样:
  1. sum = 0
  2. def fib_loop(n):
  3.        a,b = 0,1
  4.        for i in range(n):
  5.               a,b = b,a+b
  6.        return a

  7. for i in range(15):
  8.        sum = sum + fib_loop(i)
  9.    
  10. print(sum)
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-17 19:34:03 | 显示全部楼层

你不要误导人家好不好。
求和结果不对是因为求和的这一组数不对,怎么能是求和初始值的错呢?

[1,2,3,4]求和不等于20,你就说是求和初始值不对,初始值应该是10?这分明就是求和的这一组数选的不对,根本求不出来20嘛。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
qiuyouzhi + 5 + 5 + 3 谢谢指出,没细看~

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 19:53:19 | 显示全部楼层
sunrise085 发表于 2020-3-17 19:34
你不要误导人家好不好。
求和结果不对是因为求和的这一组数不对,怎么能是求和初始值的错呢?


@zltzlt 以修正最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 11:03:18 | 显示全部楼层
sunrise085 发表于 2020-3-17 19:16
为什么你每次循环要加两项呢。若是你想的是每次加的都是前两项的和,那样你就漏掉了第一项。
你看一下你的 ...

谢谢!因为我是小白,求和的式子就是把题目要求直译了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 13:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表