著名的斐波那契数列,即从第三项开始,每一项都等于前两项之和。

之前写过利用Java语言来编写,由于最近正在学Python,所以将自己的想法记录在此,有需要的朋友可以参考一下。

写在前面:这里的三个方法其实思路是差不多的,因为第一项和第二项没有前两项,所以无法直接求出本项,故使用了直接指定的方式。

方法一:利用if判断和for循环来实现

这个方法感觉稍微有些复杂,使用到了if判断、for循环以及变量交换等知识点,难度不高,初学者理解起来可能稍微有些困难(不推荐使用次方法,没啥技术含量,完全是为了用for循环实现而编写)

先贴代码:

"""
求斐波那契数列第n项以及前n项和
斐波那契数列:从第二项开始,每一项都等于前两项之和
1,1,2,3,5,8,13,21,34,55,89,144,...
"""
n = int(input("请输入要求斐波那契数列第几项:"))
Sum = 0  # 定义初始总和
num2 = 1  # 第一项,也为后续的前两项
num1 = 1  # 第二项,也为后续的前一项
if n == 1 or n == 2:  # 如果是前两项,值都为1num2 = 1Sum = n  # 这里取了个巧,因为前1项的和为1,前2项的和为2,就不用单独判断n是1还是2了
else:Sum = 2for a in range(0, n - 2):  # 利用循环来进行求值,每次循环求出第a+2项,直到循环到第n项temp2 = num2  # 前2项temp1 = num1  # 前1项temp = temp1 + temp2  # 当前项Sum = Sum + temp  # 和(等于前1项和前2项之和)# 为下一次循环做准备num2 = num1  # 下一次循环的前两项为本次的前一项num1 = temp  # 下一次循环的前一项为本次的当前项
print("第" + str(n) + "项为:" + str(temp), "\n前" + str(n) + "项和为:" + str(Sum))

解释:

  1. 定义第一项、第二项以及总和三个变量

  2. 判断是否求第一项或第二项 前两项无法用前两项之和求,所以直接定义

  3. 从第三项开始就可以使用前两项之和来求 定义Sum初始值为2,也就是前两项之和

  4. 开始循环(从第三项开始(所以范围为n-2),求第几项就循环几次。
    求第三项:
    将前两项的值(也就是1)赋值给临时变量2,用来存储本项前2项的值
    将前一项的值(还是1)赋值给临时变量2,用来存储本项前1项的值
    temp为本项的值,计算方法当然是前2项+前1项
    求和:累加,之前的Sum值加上本项的值

    接下来的两行代码就是为下一次循环做准备了,如果没有下一次循环,那这一次的准备就用不到,但是不影响。
    将本次(也就是第三项)的前1项作为下一次循环(第四项)的前两项
    将本次(也就是第三项)的本项作为下一次循环(第四项)的前一项

  5. 输出

使用for循环求斐波纳契数列第N项以及前N项的方法到这里就结束了,经测试能够正确求出,如下图所示:

方法二:利用递归实现

这个方法相对来说简单,理解上稍微有点难

老规矩,先贴代码:

"""
求斐波那契数列第n项以及前n项和
斐波那契数列:从第二项开始,每一项都等于前两项之和
1,1,2,3,5,8,13,21,34,55,89,144,...
"""
n = int(input("请输入要求斐波那契数列第几项:"))
Sum = 0  # 定义初始总和def number(x):  # 定义一个number方法,用来求第X项的和if x == 1 or x == 2:return 1else:return number(x - 2) + number(x - 1)for a in range(1, n+1):Sum = number(a) + Sum
print("第%d项为:%d,前%d项和为%d" % (n, number(n), n, Sum))

解释:

  1. 定义总和变量
  2. 定义number(x)方法,用来求第x项的值。
    此方法将用户输入的n值传入方法中进行运算,先判断是否为第一项或者第二项,如果是则直接返回1,否则则返回前2项与前1项的和(也就是第x项)
    定义循环,循环变俩从1开始到n(需要包括n,所以代码中为n+1)
  3. 这个就比较好理解了,for循环将前n项加起来,就得到了前n项和。
  4. 打印输出

运行结果:

这个方法是我觉得最简洁代码效率最高的,但是要小心使用,毕竟递归嘛,搞不好就无限循环了。

方法三:利用集合实现

代码来喽~

"""
求斐波那契数列第n项以及前n项和
斐波那契数列:从第二项开始,每一项都等于前两项之和
1,1,2,3,5,8,13,21,34,55,89,144,...
"""n = int(input("请输入要求第几项:"))
list1 = []
Sum = 0  # 定义初始和为0
num = 0
if n == 1 or n == 2:for a in range(0, n):list1.append(1)else:list1 = [1, 1]  # 前两项比较特殊,直接指定for a in range(0, n - 2):  # 从第三项开始,前两项已经排除list1.append(list1[a] + list1[a + 1])  # 将前1项与前2项的和添加到列表中for a in list1:  # 将list1中的元素相加Sum = Sum + aprint("第%d项为:%d,前%d项之和为:%d" % (n, list1[n - 1], n, Sum))
print(list1)

解释:

  1. 定义空的列表和sum

  2. 判断是否为第一项或第二项,如果是,则直接在列表中添加1(因为前两项的值都为1)

  3. 从第三项开始,则要用我们的算法开始计算(本项=前2项+前一项),前两项比较特殊,直接制定前两项

  4. 遍历集合,将集合中的每一个元素值都加到Sum中

  5. 打印输出

效果如图:
这个方法理解起来最为简单,说白了就是根据你的需要,不停的往列表内添加元素,需要哪一项就输出哪一项。求和的时候遍历列表,将列表内的元素相加就ok。

以上就是使用循环、递归、列表三种方式求斐波那契数列第n项和前n项之和的全部内容了。相信各位大佬也能看出来代码写的很稚嫩,我也是新手,一边学习一边记录,方便自己,也可以给有需要的朋友参考一下。如果有不足的地方希望各位大佬可以指出并指教一下,不胜感激!

利用Python求斐波那契数列的第N项以及前N项和(循环、递归、集合)相关推荐

  1. python编写递归函数、求斐波那契数列_利用Python实现斐波那契数列的方法实例

    今天我们来使用Python实现递归算法求指定位数的斐波那契数列 首先我们得知道斐波那契数列是什么? 斐波那契数列又叫兔子数列 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推 ...

  2. python求斐波那契数列第n个数及前n项和_使用python求斐波那契数列中第n个数的值示例代码...

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...

  3. c语言输出斐波那契数列前20项,在c语言中,如何利用数组求斐波那契数列的前20项?...

    在c语言中,以vc为例利用数组求斐波那契数列的前20项的具体步骤如下: 1.首先,打开vc: 2.点击文件.新建: 3.选择win32 console application 并在右侧输入工程的名字和 ...

  4. 利用生成函数求斐波那契数列通项公式

    利用生成函数求斐波那契数列通项公式 先吐槽一下,学习这玩意儿的时候真的是深深的明白了自己的弱小,人家的一个"解得"我居然解了两个小时..qwq 前置知识 斐波那契数列: \[f_i ...

  5. python求斐波那契数列,阶层

    求斐波那契数列 def demo(n):if n == 1 or n==2:return 1return demo(n-1)+demo(n-2) print(demo(3)) 求阶层 def demo ...

  6. 如何用python求斐波那契数列_如何使用Python实现斐波那契数列

    斐波那契数列(Fibonacci)最早由印度数学家Gopala提出,而第一个真正研究斐波那契数列的是意大利数学家 Leonardo Fibonacci,斐波那契数列的定义很简单,用数学函数可表示为: ...

  7. python求斐波那契数列前20项和、每隔5个数空一行_输出斐波那契数列的前20项(每行5个数)_学小易找答案...

    [单选题]The Third State Bank of Laramie has opened an office in Morocco. This office does not take depo ...

  8. c语言斐波那契数列前20项和,,c语言利用数组求斐波那契数列的前20项

    推荐回答 一.斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711 ...

  9. python 求斐波那契数列和几何级数

    1.斐波那契数列 1.什么是斐波那契数列 斐波那契数列是指0,1,1,2,3,5,8,13,21,-,这样的一组数列,从数列的第三项开始,每一项数是前两项之和. 公式表示为:F(i)=F(i-1)+F ...

最新文章

  1. java 按钮不显示文字_java – 使JButton中的文本不可见
  2. ASP.NET MVC 3 Razor基础语法
  3. Ubuntu 安装 Docker
  4. go基础语法:切片的定义
  5. ubuntu自动保存git账号和密码
  6. win10主题更换_还不升级? win10精简版不到10G,运行比win7还快,旧电脑的福音
  7. java判断三位数的范围代码_java判断三位数的实例讲解
  8. 用JS开发跨平台桌面应用,从原理到实践
  9. 【vue】---动态路由传值
  10. 长沙理工大学c语言编程题,长沙理工大学2014年上期期末c语言编程题库.doc
  11. Nginx配置使用upstream负载均衡和proxy_cache缓存
  12. 游戏开发之NGUI字体集制作
  13. android 格式化sd咔_在Android手机上永久格式化SD卡
  14. 装X指南之用 Xposed 把某宝资产改成100w
  15. 经济观察评论:现在是筑底时期, 对复苏仍可以保持乐观!]
  16. Deadlock found when trying to get lock; try restarting transaction主要要是死锁问题呢怎么解决
  17. 修改TOMCAT6.0内存的方法
  18. 独孤思维:减压还能赚钱?让压力变有利可图的项目
  19. Android 绘制数字向上向下滚动的动画
  20. python 使用grpc

热门文章

  1. 区块补习班 | 复联4没彩蛋?那是因为你不懂区块链
  2. IT业的下一次革命:软件定义网络
  3. 小小输入法的郑码练习
  4. iPhone x 原型适配的一些事儿
  5. 2016年该如何理财
  6. C语言程序LCD12864
  7. 计算机应用基础—多媒体技术(三)
  8. iphone快捷指令蚂蚁森林能量_iOS逆向-手把手教你写支付宝蚂蚁森林收集能量助手...
  9. 扯一扯 typescript中几种类型 (附带 环境安装)
  10. 新生研讨课结课报告--图像处理