什么是动态规划
动态规划小李子
斐波那契数列
自上而下的备忘录法
通过一个数组来及记录已经求过的值,然后在需要的取出那个值即可。
//斐波那契函数
function fb(n) {
if (n <= 0) {
return -1
}
var memory = new Array(n + 1)
for (var i = 2; i < memory.length; i++) {
memory[i] = -1
}
return fbDiGui(n, memory)
}
//定义一个递归函数
function fbDiGui(n , memory) {
if (memory[n] != -1) {
return memory[n]
}
if (n <= 2) {
memory[n] = 1
} else {
memory[n] = fbDiGui(n-2) + fbDiGui(n - 1)
}
}
自下而上的动态规划
//从下到上
function fbE(n) {
var memory = new Array(n + 1);
for (var i = 1; i < n; i++) {
if (i <= 2) {
memory[n] = 1;
} else {
memory[n] = memory[n - 1] + memory[n - 2];
}
}
return memory[n];
}