Python之斐波那契数列的实现

举报
二哈侠 发表于 2022/10/10 21:15:24 2022/10/10
【摘要】 1.斐波那契数列的概念斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)...

1.斐波那契数列的概念


斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波那契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波那契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。



斐波那契数列指的是这样一个数列:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ……这个数列从第3项开始,每一项都等于前两项之和。

试用Python代码输出斐波那契数列前20项。

2.实现方法

用Python代码输出斐波那契数列,需把握住数列的特点:从第3项开始,每一项都等于前两项之和因此我们可以使用递归、for循环等方法实现。

3.解题方法

(1)递归

def fib1(n):
    if n == 1 or n == 2:
        return 1
    return fib1(n - 1) + fib1(n - 2)

for i in range(1, 21):
    print(fib1(i), end=' ')

第1行: 定义函数fib1,传入参数n

第2-4行: 用if...else语句进行判断,由于该数列从第三项开始,每个数的值为其前两个数之和,所以当n == 1或 n == 2时,返回值为1,这也是递归的结束条件;否则返回值为前两个数的和,即fib1(n-1) +fib1(n-2)

第6行: 用for语句遍历1-20的整数

第7行: 为参数n赋值为i, 并用end 将print输出到同一行并以空格结尾

(2)for循环

def fib2(n):
    a, b = 0, 1
    for i in range(n + 1):
        a, b = b, a + b
    return a

for i in range(20):
    print(fib2(i), end=' ')

第1行: 定义函数fib2,传入参数n

第2行: 为a,b分别赋值为0和1

第3行: 用for循环遍历前n项的整数

第4行: 由于该数列从第三项开始,每个数的值为其前两个数之和,可写成a, b = b, a + b。这个式子中,右边的表达式会在赋值变动之前执行,即先执行右边,如第一次循环得到b-->1,a+b --> 0+1 然后再执行赋值 a,b =1,0+1,所以执行完这条后a=1,b=1

第5行: 返回a的值

第6行: 用for语句遍历前20的整数

第7行: 为参数n赋值为i, 并用end将print输出到同一行并以空格结尾

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。