輸出斐波那契數列的第n項

題目描述

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

考察知識點

遞歸和循環

斐波那契數列簡介

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖爲例子而引入,故又稱爲“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
(來源百度百科)

思路

根據斐波那契數列概念,可以想到使用遞歸方式。
參考代碼

package com.sunshuo.java.offer;

/**
 * <p>Title:Solution7a</p>
 * <p>Description:斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項【遞歸方式】</p>
 * @author SunShuo
 * @version 1.0
 * @date 2019年2月18日 下午4:36:50
 */
public class Solution7a {
    public int Fibonacci(int n) {
        if (n <= 0) {
            return 0;
        }

        if (n == 1 || n == 2) {
            return 1;
        }

        return Fibonacci(n - 1) + Fibonacci(n - 2);
    }

}

平均運行時間參考:
運行時間:907ms
佔用內存:9072k

使用循環方式參考代碼:

package com.sunshuo.java.offer;

/**
 * <p>Title:Solution7b</p>
 * <p>Description:斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項【非遞歸方式】</p>
 * @author SunShuo
 * @version 1.0
 * @date 2019年2月18日 下午4:38:11
 */
public class Solution7b {
    public int Fibonacci(int n) {
        if (n <= 0) {
            return 0;
        }

        if (n == 1 || n == 2) {
            return 1;
        }

        int first = 0;
        int second = 1;
        int result = 0;

        for (int i = 1; i < n; i++) {
            result = first + second;
            first = second;
            second = result;
        }

        return result;
    }

}

平均運行時間參考:
運行時間:20ms
佔用內存:9156k

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章