斐波拉契数列的几种求解方法,包括递归,递归优化,动态规划。
递归方法
export const fib = (n: number) => {
if ([0, 1].includes(n)) {
return n;
}
return fib(n - 1) + fib(n - 2);
};
递归加缓存方法
export const fibMemory = (n: number) => {
const memo = [0, 1];
const calc = (m: number) => {
if (memo[m]) {
return memo[m];
}
return calc(m - 1) + calc(m - 2);
};
return calc(n);
};
动态规划方法
export const fibDynamics = (n: number) => {
if ([0, 1].includes(n)) {
return n;
}
const dy = [0, 1];
for (let i = 2; i <= n; i++) {
dy[i] = dy[i - 1] + dy[i - 2];
}
return dy[n];
};