面試題10 斐波那契數列

2021-08-25 11:47:11 字數 2607 閱讀 5940

/**

面試題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 看著斐波拉契數列,突然想到了一句話很貼切,道生一,一生二,二生三,三生萬物.斐波拉契最簡...