一共有10个苹果,每次可以吃一个或者两个,问有多少种吃法;
如果你吃10个苹果,可以分解成下面两种情况:
● 吃9个苹果,最后吃1个苹果。假设这种情况下,上前面9个苹果的方法数为m。
● 吃8个苹果,最后吃2个苹果。假设这种情况下,上前面8个苹果的方法数为n。
所以,吃10个苹果的方法数,其实就是 m + n。
可以递归为:
f(n) = f(n - 1) + f(n - 2), n > 2
f(n) = 2 , n = 2
f(n) = 1 , n = 1
即: 斐波那契数列
function fn(n){
if(n==1) return 1;
if(n==2) return 2;
return fn(n-1)+fn(n-2);
}
console.log(fn(10))
附:斐波那契数列代码写法(用上面的)
function fibo (n) {
return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;
}