1. 程式人生 > >劍指offer之個人刷題歷程記錄

劍指offer之個人刷題歷程記錄

斐波那契數列

題目描述:
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從1開始,第0項為1)。
n<=39
解題思路:
斐波那契數列:1,1,2,3,5,8,13…從1,1開始,下一個數字是前兩個數字之和。
注意點:
1.注意題目上說n<=39,所以需要判斷n的大小。
2.使用遞迴的時候,雖然寫出來能跑,但是發現執行時間真長,足足1234ms,重複計算就是浪費時間,而且看到討論區裡說的一直遞迴容易使得棧溢位。仔細想了一下確實是這樣。
3.使用不是遞迴的,直接算出來存在數組裡反而快,僅用17ms而且佔用記憶體也下降了。

具體程式碼:


1.遞迴:

public class Solution {
    public int Fibonacci(int n) {
        if(n>39){
            return 0;
        }
        if(n<=1){
           return n;
       }
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
}

2.不是遞迴:

public class Solution {
    public int Fibonacci(int n) {
        if
(n<=1){ return n; } int[] array=new int[n]; int i; array[0]=1; array[1]=1; for(i=2;i<n;i++) { array[i]=array[i-1]+array[i-2]; } return array[n-1]; } }

總結:
java新建一個數組:(參考的部落格連結)
https://www.cnblogs.com/CAOXIAOYANG/p/6003436.html