斐波那契数列介绍
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果
兔子繁殖问题
根剧高德纳(Donald Ervin Knuth)的《计算机程序设计艺术》(The Art of Computer Programming),1150 年印度数学家 Gopala 和金月在研究箱子包装物件长宽刚好为 1 和 2 的可行方法数目时,首先描述这个数列。 在西方,最先研究这个数列列的人是比萨的李奥纳多(意大利人斐波那契 Leonardo Fibonacci),他描述兔子生長的数目時用上了这数列。
第一个月初有一对刚诞生的兔子;第二个月之后(第三个月初)他们可以生育,每月每对可生育的兔子会诞生下一对新兔子;兔子永不死去
假设计 n 月有可生育的兔子总共 a 对,n+1 月就总共有 b 对。在 n+2 月必定总共有 a+b 对: 因为在 n+2 月的时候,前一月(n+1 月)的 b 对兔子可以存留至第 n+2 月(在当月属于新诞生的兔子尚不能生育)。而新生育出的兔子對数等于所有在 n 月就已存在的 a 对
上面故事就是斐波那契数列的起源。斐波那契数列用数学方式表示就是:
a0 = 0 (n=0)
a1 = 1 (n=1)
a[n] = a[n-1] + a[n-2] (n>=2)
下面是代码实现
#!/usr/bin/env Python
#coding=utf-8
a,b = 0,1
lst = [0,1]
for i in range(10):
a,b = b,a+b #关键在这句
lst.append(b)
print a
print lst
解析:a,b = b,a+b
计算机在赋值时 ,等号 右边会先进行计算,然后把 计算后的值覆盖原有的值
这种写法是Python独有的。
这种写法还可以实现变量交换,像这样:a,b = b,a