牛客 斐波那契數列

2021-09-11 06:02:31 字數 830 閱讀 8184

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。n<=39

最後比較兩種方法雖然都是可以通過題目中的測試用例,但是使用遞迴方法的執行時間明顯比使用迭代方法的執行時間

原因:使用迭代的方法的時候重複計算,而且重複的情況還很嚴重,舉個例子,n=4,看看程式怎麼過程的:

fibonacci(4) = fibonacci(3) + fibonacci(2);

= fibonacci(2) + fibonacci(1) + fibonacci(1) + fibonacci(0);

= fibonacci(1) + fibonacci(0) + fibonacci(1) + fibonacci(1) + fibonacci(0);

由於我們的**並沒有記錄fibonacci(1)和fibonacci(0)的結果,對於程式來說它每次遞迴都是未知的,因此光是n=4時f(1)就重複計算了3次。

牛客網 斐波那契數列

題目 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項,n 39。斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,2...

斐波那契數列 牛客筆記

public class fibonaccitest system.out.println for int i 0 i 10 i 給定乙個數,返回斐波那契數列的第n項 從0項開始,第零項為0 遞迴實現 public static int fibonacci int n else 非遞迴實現 前兩項之...

牛客 斐波那契數列第幾項

小w在計算乙個數列,其中a1 1,a2 2,an 2 an 1 an。儘管他計算非常精準,但很快他就弄混了自己的草稿紙,他找出了一些他計算的結果,但他忘記了這些都是數列中的第幾項。每行包括數列中的一項ak k 100000 總行數t 30。對於每一項ak,輸出一行包括乙個正整數k表示輸入中數是數列的...