生成斐波那契序列 Fibonacci

一个格子棋盘,第一个格子放一颗米,第二个格子放两个米,第三个格子是第一个和第二个格子米粒数的和,第四个格子是第二个和第三个格子米粒数的和,然后依次类推。求出,第N个格子有多少课米粒。

棋盘上大致就是   

第一格:1

第二格:2 

第三格:1+2 =3  

第四格:2+3 =5

第五格:3+5 =8 ...

前两格设定初始值 1 和 2

然后我们定义一个 a和b ,代指上面等号右侧的两个数字,

即第三格  1+2 改成a+b=3 ,此时a=1,b=2

第四格     2+3=5,a =2 b =3,此时2是上一行的b,3是上一行a+b的结果,所以我们利用python写成  a , b = b ,a + b

等号右侧可以看成把第三格的b赋值给了第四格的a,把第三格的结果3(a+b得到),赋值给了第四格的b。

绿色赋值给了绿色,红色赋值给了红色

如果我们统计第四格的米粒数,那么就是a+b的值,或者得到刚被a+b赋值的变量b(等号左侧),即绿色的b

下面代码

1.max参数是用户想要统计第几格有多少米粒

2.不停循环执行  a,b = b,a+b ,直至 n = 等于max,就是我们想要统计第max格米粒数

3.为什么第一格是1,第二格是2,因为这是数学假设,你也可以假定第一格是2,第二格是1.所以当0<max<3时,需要单独统计。

In [13]: def fib(max):

    ...:     n,a,b =1,0,1
    ...:     if 0 < max <3:
    ...:         return max
    ...:     elif max>= 3:
    ...:         while n<=max:
    ...:             a,b = b,a+b
    ...:             n +=1
    ...:         return b
    ...:     else:

    ...:         return "argument error"

In [24]: fib(5)
Out[24]: 8
In [25]: fib(2)
Out[25]: 2
In [26]: fib(0)
Out[26]: 'argument error'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值