斐波那契数列
1. 斐波拉契数列简介
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
其实就是从第三项开始,每项的值等于前两项的和
青蛙跳台阶
只有一级台阶时:1
有两级台阶的时候有两种跳 法 :11和2
有三节台阶的时候有三种跳法:111、12、21
2.实现斐波拉契数列
1.使用匿名函数的方式生成
fib=lambda n:n if n<=2 else fib(n-1)+fib(n-2)
2.利用装饰器
def fib(func):
cache={}
def wrap(*args):
if args not in cache:
cache[args]=func(*args)
return cache[args]
reutrn wrap
@memo
def fib(i):
if i<2:
return 1
return fib(i-1)+fib(i-2)
fib(6)
3.用最简单的方法实现
def fib(i):
if i<2:
return 1
return fib(i-1)+fib(i-2)
fib(6)
4.定义简单的方法来实现
#此方法有些问题
def fib(n):
a,b=0,1
for _ in xrange(n):
a,b=b,a+b
return b
fib(3)