目录

1.说明

2.原理

3.python实现

第一种:

第二种:

第三种

第四种


1.说明

Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......

如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下: 1、1 、2、3、5、8、13、21、34、55、89......

2.原理

斐波那契数列的规律其实就是将前两项的值相加并得到当前项的值,用for循环和while循环都能实现这个逻辑,如下图:

赋值原理

  n代表斐波那契数列(以下简称数列)中的当前项的值,这个值要存储起来在下一个循环中与当前循环中的上一项相加,也就是下一个循环中的前二项,由于斐波那契数列是从0和1开始的,所以在循环开始时要初始化a和b的值,将a作为第0项,b作为第一项。在第一次循环中n=a+b=1,这样n中就储存了第二项的值,然后将这个值赋值给b,使b中存储第二项的数列值,也就是当前项的数列值。另外,更重要的一点是,在n赋值给b之前,b一定要将其在当前循环中的值先赋值给a,然后a的值就是下次循环中的第前二项的值。在某次循环中,n始终代表的是数列中当前项的值,b的最终值也是当前项的值,但会留在下一次循环中作为下一次循环的前一项的值使用,而a在本次循环中的最终值则是当前循环中b的初始值,也就是上一次循环的n的值,即当前循环的上一个数列值,下一循环的前二项的值。依次类推,周而复始的计算出斐波那契数列。

3.python实现

第一种:

#斐波那契数列实现
n = int(input("请输入您要输出多少项:"))n1 = 0#起始第一项
n2 = 1#起始第二项
count = 2#因为已有第一项和第二项,所以起始次数为2#判断输入输出的合理性并完成输出
if n <= 0:print("请输入一个正整数!")
elif n == 1:print("斐波那契数列:")print(n1)
else:print("斐波那契数列:")print(n1,",",n2,end=" ,")while count < n:sum = n1 + n2print(sum,end=" ,")#更新 n1 n2 的值n1,n2 = n2,sumcount += 1

输出:

看到我们得到的结果,最后还有一个逗号,对于我这有强迫症的人,实在不能接受,那咋整?

第二种:

消除第一种,后面的逗号

#斐波那契数列实现
n = int(input("请输入您要输出多少项:"))n1 = 0#起始第一项
n2 = 1#起始第二项
count = 2#因为已有第一项和第二项,所以起始次数为2#判断输入输出的合理性并完成输出
if n <= 0:print("请输入一个正整数!")
elif n == 1:print("斐波那契数列:")print(n1)
else:print("斐波那契数列:")print(n1,",",n2,end=" ,")while count < n-1:sum = n1 + n2print(sum,end=" ,")#更新 n1 n2 的值n1,n2 = n2,sumcount += 1
if count < n:sum = n1 + n2print(sum,end="")#更新 n1 n2 的值n1,n2 = n2,sumcount += 1

返回:

在这里,我们可以看到,第一种结果中,最后的 , 没有了,但这种方法感觉还是比较复杂,那?

第三种

我们用列表来输出斐波那契数列试试,while循环

#斐波那契数列实现
n = int(input("请输入您要输出多少项:"))n1 = 0#起始第一项
n2 = 1#起始第二项
L = [n1,n2] #起始列表#判断输入输出的合理性并完成输出
if n <= 0:print("请输入一个正整数!")
elif n == 1:print("斐波那契数列:")print(n1)
else:print("斐波那契数列:")for i in range(2,n):sum = n1 + n2L.append(sum)#更新 n1 n2 的值n1,n2 = n2,sumprint(L)

返回:

第四种

for循环输出列表斐波那契数列

#斐波那契数列实现
n = int(input("请输入您要输出多少项:"))n1 = 0#起始第一项
n2 = 1#起始第二项
L = [n1,n2] #起始列表
count = 2#因为已有第一项和第二项,所以起始次数为2#判断输入输出的合理性并完成输出
if n <= 0:print("请输入一个正整数!")
elif n == 1:print("斐波那契数列:")print(n1)
else:print("斐波那契数列:")while count < n:sum = n1 + n2L.append(sum)#更新 n1 n2 的值n1,n2 = n2,sumcount += 1print(L)

输出:

【蓝桥杯每日一练】 斐波那契数列相关推荐

  1. 第五届蓝桥杯A组java—斐波那契

    /* 标题:斐波那契     斐波那契数列大家都非常熟悉.它的定义是:     f(x) = 1                    .... (x=1,2)     f(x) = f(x-1) + ...

  2. 循环斐波那契数列_每日一课 | 斐波那契数列的第n个项

    Python程序借助两种方法来计算斐波那契数列的第n个项 (有许多方法可以计算第n个项). 描述: 第一种方法:动态编程 在这种方法中,我们计算出斐波那契数列直到n的所有项,如果我们需要计算小于n的任 ...

  3. 每天一练——斐波那契数列前N项之和

    什么是斐波那契数列? 斐波那契数列就是前两项之和会等于第三项. 斐波那契数列通常以一为起始 :1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597-- ...

  4. 蓝桥杯入门练习题斐波那契数列

    蓝桥杯入门练习题 斐波那契数列 #include <stdio.h> #include <stdlib.h>int main() {long long i, j, f1 = 1 ...

  5. python斐波那契数列前20项_Python每日一练之实现斐波那契数列

    概述 今天主要分享下怎么用Python实现斐波那契数列,大家有空可以玩一下~ 需求 用Python脚本实现斐波那契数列. 思路 斐波那契数列,也称兔子数列,是指1,1,2,3,5,8,13,21,34 ...

  6. 蓝桥杯练习题:对给定整数基于斐波拉契数列构造字符串

    文章目录 一.提出问题 二.解决问题 (一)分析 (二)编程 1.构造[1, n]范围内的斐波拉契数列表 2.基于斐波拉契数列构造字符串函数 3.编写主控程序 4.运行程序,查看结果 三.优化算法 一 ...

  7. 2013蓝桥杯 黄金分割数 斐波那契数列与黄金分割比例的结合应用+模拟手算

    黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次 ...

  8. 【每日一题】客似云来(斐波那契数列)

    [每日一题]客似云来(斐波那契数列) 文章目录 [每日一题]客似云来(斐波那契数列) 1.题目来源 2.题目描述 3.输入/出描述 4.解题思路 5.代码展示 1.题目来源   牛客网:客似云来 2. ...

  9. 【每日一题】剑指 Offer 10- I. 斐波那契数列

    剑指 Offer 10- I. 斐波那契数列

最新文章

  1. Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,
  2. 抽象代数的抽象方法本质
  3. 硬盘对应计算机主板,电脑中那些硬件是容易损坏的,机械硬盘和主板
  4. python list遍历 间隔_Python 列表(List) 的三种遍历(序号和值)方法
  5. 史上最全SVN使用总结,建议先收藏后观看
  6. SQL基础之 基本属性和运算 (一)
  7. 感叹号挖孔屏稳了!iPhone 14 Pro高清概念图曝光:屏占比创5年最高
  8. sshpass简介及安装
  9. No bean named 'cxf' is defined
  10. 在InstallShield中发布单一的Setup.exe文件
  11. HttpClient、HttpURLConnection、OKHttp和Volley
  12. win10添加组策略命令
  13. 利用k-mer进行基因组调查
  14. 地图上如何量方位角_经纬度计算距离和方位角
  15. 网络安全专题报告:零信任安全,数字时代的主流安全架构
  16. 爬取电影天堂最新电影的名称和下载链接
  17. unix/Linux BSD以及System V---认知
  18. 亲身经历:一次sql缺少where条件的惨案,绩效奖金差点没啦~
  19. 纵观Android Adapter适配器。比较三种常用Adapter(SimpleAdapter,ArrayAdapter,BaseAdapter)。
  20. Springboot整合redis从安装到FLUSHALL

热门文章

  1. 输入过滤筛选下拉信息(类似百度输入)
  2. stream+springmvc实现文件断点续传
  3. Java中的return this
  4. npm的镜像替换淘宝
  5. Windows之node.js安装
  6. java createstatement,createStatement参数说明
  7. 改变 this 指向的 call 和 apply
  8. C语言读取load格式文件,求指导,如何用c语言实现读取*.raw格式图像
  9. 歌星大奖赛C语言程序,C_歌星大奖赛
  10. android代码移除焦点,android-如何从单个editText移除焦点