【python】斐波那契数列

         形如:0,1,1,2,3,5,8,13,21,34,55······的数列,在数学上称为斐波那契数列。  

        根据斐波那契数列的表达式:F(n)=F(n-1)+F(n-2),(n≤2,F(0)=0,F(1)=1) 可知。从第三位开始,以后每一位的值都是前面两位的值之和,让我们用代码把这个想法表示出来:

a, b = 0, 1 #已知前两位a和b,分别赋值0和1
while True:
    s = a + b #第三位开始,每一位的值等于它的前两位值之和
#到第四位,充当前两位的a和b,要作为整体向后移一位,也就是a变成第二位,b变成第三位,以此类推
    a = b
    b = s

        看起来不够味儿,我们把while循环换成for循环,便于控制输出位数。然后添加可以输入位数的语句。最后以列表输出:

a, b = 0, 1 #已知前两位a和b,分别赋值0和1
digit = int(input())
c = [0,1]
for i in range(digit):
    s = a + b #第三位开始,每一位的值等于它的前两位值之和
#到第四位,充当前两位的a和b,要作为整体向后移一位,也就是a变成第二位,b变成第三位,以此类推
    a = b
    b = s
    c.append(s)
print(c[:digit])
5
[0, 1, 1, 2, 3]

        你可能注意到了创建变量“c”时,初始化的列表里加入了0,1,这是因为程序的结果——“s”,是从第三位开始的,最后的输出则需要选择列表里的前digit位。

        但是,这样的代码还不够简练,我们用三个赋值语句完成了目标,可能只用一个语句实现吗?当然行!观察这仨式子,好像可以合成一个式子,因为他们各有相同的变量。把a和b放在等号左边,a的值是由b赋来的,而b的值是由a+b赋来的:

a, b = 0, 1 #已知前两位a和b,分别赋值0和1
digit = int(input())
c = [0]
for i in range(digit):
    a, b = b, a + b #三个式子合并之后的结果
    c.append(a)
print(c[:digit])

        这样就很好看了,然后再把它变成函数,在以后做斐波那契数列相关的题目时直接拿来用就好啦。我是用输入位数举例的,有些情况可能是输入最大值,那用while循环就好了。

        所以,位数输入的斐波那契数列:

def Fibonacci(digit):
    c = [0]
    a, b = 0, 1
    for i in range(digit):
        a, b = b, a + b
        c.append(a)
    return c[:digit]
digit = int(input())
print(Fibonacci(digit))

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值