/**面試題10
:斐波那契數列
* 題目一:求斐波那契數列數列的第n項
* 現在要求輸入乙個整數
n,請你輸出斐波那契數列的第n項
* 思路:遞迴的效率低,使用迴圈
*@authorjuaner*
*/ publicclassfibonacci1
publiclongfibonacci (intn)
if(
n== 1)
for(inti
= 2;
i<= n;
i++)
returnresult;
} }
/**
題目二:青蛙跳台階問題
* 題目描述:乙隻青蛙一次可以跳上
1級台階,也可以跳上
2級。求該青蛙跳上乙個
n級的台階總共有多少種跳法。
*/publicclassfibonacci3
publiclongfibonacci(inttarget)
if(
target
== 1)
if(
target
== 2)
// 乙個n
級台階,
第一次跳有兩種選擇,
// 一是第一次跳1級
,那麼跳法數目等於後面剩下的
n-1級台階的跳法數目
// 二是第一次跳2級
,那麼跳法數目等於後面剩下的
n-2級台階的跳法數目
// 乙個n
級台階總的跳法數目為
f(n-1) + f(n-2),
相當於斐波那契數列
intfirst
= 1;
intlast
= 2;
intsum
= 0;
for(inti
= 3;
i<=
target; i
++)
returnsum;
} }
//**
題目:**跳台階
* 題目描述:乙隻青蛙一次可以跳上
1級台階,也可以跳上2級
……它也可以跳上
n級。求該青蛙跳上乙個
n級的台階總共有多少種跳法。
*/publicclassfibonacci2
publiclongfibonacci(intn)
} ///*
* 題目:矩形覆蓋
* 題目描述:
我們可以用
2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個
2*1的小矩形無重疊地覆蓋乙個
2*n的大矩形,總共有多少種方法?
思路:斐波那契數列思想
,同青蛙跳台階問題解法
*/publicclassfibonacci4
publiclongfibonacci (intn)
if(
n== 1)
if(
n== 2)
/**
第一塊有兩種方式:橫著放和豎著放
橫這放對應為發
f(n-2);
豎著放下一步的放方法為
f(n-1);
所以總的放的方法為
f(n)=f(n-1)+f(n-2);
相當於斐波那契數列
*/intfirst
= 1;
intlast
= 2;
intsum
= 0;
for(inti
= 3;
i<= n;
i++)
returnsum;
} }
面試題10 斐波那契數列
面試題10 斐波那契數列 題目 寫乙個函式,輸入n,求斐波那契 fibonacci 數列的第n項。fibonacci數列,不用多說,相信大家都了解,f 0 0,f 1 1,f n f n 1 f n 2 n 2 看著斐波拉契數列,突然想到了一句話很貼切,道生一,一生二,二生三,三生萬物.斐波拉契最簡...
面試題10 斐波那契數列
f 0 0 f 1 1 f n f n 1 f n 2 n 2 遞迴求解 public static long fib int n 為什麼說遞迴不好呢?採用迴圈的方式 順序計算,先定義f0,f1的值,根據n去迴圈,這樣需要儲存前兩個數的值,效率提公升了很多 int res if n 2 return...
面試題10 斐波那契數列
面試題10 斐波那契數列 題目 寫乙個函式,輸入n,求斐波那契 fibonacci 數列的第n項。fibonacci數列,不用多說,相信大家都了解,f 0 0,f 1 1,f n f n 1 f n 2 n 2 看著斐波拉契數列,突然想到了一句話很貼切,道生一,一生二,二生三,三生萬物.斐波拉契最簡...