斐波拉契数列:1,1,2,3,5,8,13,21,34,55,89,144。。。
以下程序默认数列从1开始,不考虑参数为0情况。若保存以前值可以用列表保存
常规写法
def fib(num):
i = 2
n,m = 1,1
while i<num:
i+=1
n,m = m,m+n
return m
递归写法 此方法看看就好,bie yong
def fib(num):
if num<2:
return 1
else:
return fib(num-1)+fib(num-2)
装饰器写法 速度要快于常规写法(快很多倍)
def memo(func):
cache = {}
def wrap(*args):
if args not in cache:
cache[args] = func(*args)
return cache[args]
return wrap
@ memo
def fib(i):
if i < 2:
return 1
return fib(i-1) + fib(i-2)