本质
假设:一对成年兔子每年生一对小兔,小兔一年后成年。
提问:一开始有一对小兔,N年后共有多少只兔子?

1 1 2 3 5 8 13 …
假设:上一个N级台阶的楼梯,每次只能走一格或者两格。
提问:总共有多少种走法?
满二叉树?
o(n*n)
let fibnacci = n => n <= 0 ? 0 : (n = 1 ? 1 : fibnacci(n-2) + fibnacci(n-1)
o(n)
递归变迭代,动态规划
let fibnacci = n => {if(n == 0) return 0;let a1 = 0, a2 = 1;for (let i = 1; i < n; i ++) {[a1, a2] = [a2, a1 + a2];}return a2;}
o(log(n))
通项公式
let fibnacci = n => (Math.pow((1 + Math.sqrt(5))/2, n)-Math.pow((1-Math.sqrt(5))/2, n)/Math.sqrt(5)
let pow = (x, n) => {let r = 1;let v = x;while (n) {if (n % 2 == 1) {r *= v;n -= 1;}v = v * v;n = n / 2;}return r;}
o(n)
矩阵法
