当前位置: 首页 > news >正文

python实现斐波那契数列详解(黄金分割)

今天给各位分享一个常见的题目:求斐波那契数列前n项分别是什么(也称为黄金分割数列),整个数列需满足一个条件即第三项的值等于前两项相加的和,如第一项是1、第二项是1、第三项是2、第四项是 3、第五项是5...

满足公式:f(n+2)=f(n+1)+f(n)


拿到这个题目很多人不知道思路,接下来我会带领各位一步一步地梳理分析。

首先,我们需要定义一个函数,函数里面至少要有一个变量n来作为传值的对象,即我要求前n项的内容,所以必须要有一个n在函数中作为形式参数。

def fibo(n):pass

函数构件好了之后则需要考虑初始值的问题,我们定义一个初始值的默认值为0作为记录循环轮数的变量,且会不断增长,所以还需要一个空的列表(list)来容纳接下来程序生成的数字序列。

def fibo(n):i = 0fibo_list = []

由于是循环递增的,所以必不可少的就是while循环了,从而实现循环增长,我们定义一个while循环,根据题目要求(第一项和第二项为1),需要设置2个判断:

判断1:当i=0 或 i=1的时候,列表中的前两位都是1

判断2:当i大于等于2的时候,第三项的值等于第一项与第二项的和,并添加到列表

def fibo(n):i = 0fibo_list = []while i < n:if i == 0 or i == 1:fibo_list.append(1)if i >= 2:third_num = fibo_list[-1] + fibo_list[-2]fibo_list.append(third_num)

写到这里,大致框架已经构建好了,只需让循环动起来并输出,调用函数时给n赋值即可,使用i += 1即可实现(i+=1等价于i = i+1)

def fibo(n):i = 0fibo_list = []while i < n:if i == 0 or i == 1:fibo_list.append(1)if i >= 2:third_num = fibo_list[-1] + fibo_list[-2]fibo_list.append(third_num)i += 1print(fibo_list)fibo(10)

以上代码运行后就可以实现从第一项输出到第十项

结果如下:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

欢迎关注,带你探秘全栈的程序世界 

http://www.lryc.cn/news/68865.html

相关文章:

  • 整合营销和内容营销哪个好,有什么区别
  • C# | [二进制字符串] 与 [字节数组] 互相转换,一行代码就搞定! - CodePlus系列
  • Java 细节汇总(5)-Comparator#compare() 升降序确定
  • 湖北棒球发展报告·棒球5号位
  • 使用Eclipse 进行远程 Debug 调试
  • 记第一次出差得出的经验
  • 第12章:视图
  • Word控件Aspose.Words教程:操作 XPS 和 EPS 文档
  • java并发-Exchanger
  • 毫米波雷达系列 | 传统CFAR检测(自适应类)
  • 【2023/05/19】NFA
  • 汽车功能安全
  • 【Python】数据分析与可视化实践:收支日统计数据可视化的实现
  • Halcon 中_xld算子的概念与应用? select_shape_std 和 select_shape_xld区别?
  • [pgrx开发postgresql数据库扩展]7.返回序列的函数编写(3)多行表序列
  • 刚入职,就想跑路了...
  • 如何让技术架构师具有预知未来业务发展的能力
  • 卷麻了,新来的00后实在是太卷了...
  • 单片机--实战练习
  • Go Etcd 分布式锁实战
  • Windows环境下pcl点云库 安装配置教程
  • 岗位分析与可视化系统(三)
  • unity进阶学习笔记:json和xml
  • 数据结构之初识树与堆
  • 虚拟化技术 — VirtIO 虚拟设备接口标准
  • Dubbo——SpringBoot集成Dubbo(@Autowired和@Reference的区别、Dubbo的服务治理)
  • 高并发系统的三把利器
  • AppiumWinAppDriver自动化测试 Failed to locate opened application window with appid问题
  • 渗透测试--6.1.aircrack-ng破解wifi密码
  • C++中的继承、以及赋值兼容转换。