算法-斐波拉契数列

斐波那契数列
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)

 

posted @ 2020-02-28 16:16  进阶的淑琴  阅读(757)  评论(0)    收藏  举报