1. 程式人生 > >吃蘋果問題

吃蘋果問題

一共有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))

附:斐波那契數列程式碼寫法2

function fibo (n) {
  return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;
}