面試題10:斐波那契數(shù)列

題目一:求斐波那契數(shù)列的第n項
寫一個函數(shù),輸入n,求斐波那契數(shù)列的第n項
思路:不要用遞歸,效率太低,會棧溢出;用循環(huán)代替
解決方案:

public class Question10 {
    public static int Fibonacci(int n){
        int[] result = new int[]{0,1};
        if (n < 2) return result[n];
        int fibNminusOne = 1;
        int fibNminusTwo = 0;
        int fibN = 0;
        for (int i=2; i<=n; i++){
            fibN = fibNminusOne + fibNminusTwo;
            fibNminusTwo = fibNminusOne;
            fibNminusOne = fibN;
        }
        return fibN;
    }

    public static void main(String[] args) {
        System.out.println(Fibonacci(3));
    }
}

題目二:青蛙跳臺階問題
一只青蛙可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上n級臺階總共有多少種跳法。
思路:思想和斐波那契一樣,第一次為1種,第二次為2種,第三次為為第一次和第二次的和,以此類推,很精妙。
解決方案:
public static int jumpStairs(int n){
int[] result = new int[]{0,1};
if (n < 2) return result[n];
int fibNminusOne = 1;
int fibNminusTwo = 1;
int fibN = 0;
for (int i=2; i<=n; i++){
fibN = fibNminusOne + fibNminusTwo;
fibNminusTwo = fibNminusOne;
fibNminusOne = fibN;
}
return fibN;
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容