先从斐波那契说起
说到斐波那契,我们第一个递归程序一般都是从斐波那契开始的。=-=
大概是这么写的:
def fib1(n):
if n== 1 or n == 2:
return 1
return fib1(n-1) + fib1(n-2)
这是自顶向下算的,不同的分支会包含大量相同的运算。所以会耗费大量的资源。
所以思考之后可以自底向上的做,类似于数组那样。虽然看上去很蠢而且代码风格不如递归,但是效果是真的好。
cont = 0
temp = []
def fib(a,b,n):
global cont
cont += 1
if n > 2:
return fib(b,a+b,n-1)
return b