动态规划

先从斐波那契说起

说到斐波那契,我们第一个递归程序一般都是从斐波那契开始的。=-=
大概是这么写的:

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
点赞