面試題10 斐波那契數列

2021-10-02 10:31:26 字數 1604 閱讀 1785

求斐波那契數列的第n項。

寫乙個函式,輸入n,求斐波那契(fibonacci)數列的第n項。

根據斐波那契數列的定義,最容易想到的解法就是遞迴,但是遞迴的效率很慢,因為存在大量的重複計算問題。繼而可以想到遞推公式。

首先需要了解到乙個數學公式(如下),如果我們要求f(n),只需要求矩陣的n-1次冪即可,然後取出矩陣的a[0][0]就是結果了。再來看矩陣的n-1次冪,還是需要o(n)的時間複雜度,這時候,又要用到另乙個公式(如下),至此,我們可以開始寫**了。

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個n級台階總共有多少種跳法。

先考慮簡單的情況,假設只有1級台階,顯然只有1種跳法。如果有2級台階,就有2種跳法:分兩次跳,每次跳1級;分一次跳,每次跳2級。

再來分析一般情況,把n級台階的跳法看做n的函式,記作f(n)。當n>2時,第一次跳就有兩種選擇:第一次跳1級,此時後面的跳法是f(n-1)種;第一次跳2級,此時後面的跳法是f(n-2)種,於是f(n)=f(n-1)+f(n-2)。

因為我們分析出f(n)是斐波那契數列了,所以解法同上。

面試題10 斐波那契數列

面試題10 斐波那契數列 題目一 求斐波那契數列數列的第n項 現在要求輸入乙個整數 n,請你輸出斐波那契數列的第n項 思路 遞迴的效率低,使用迴圈 authorjuaner publicclassfibonacci1 publiclongfibonacci intn if n 1 for inti ...

面試題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...