[剑指Offer]10-斐波那契数列(循环)-Java

题解

使用循环,时间复杂度O(n).

相关

跳台阶:f(n)=f(n-1)+f(n-2)
变态跳台阶:f(n)=2*f(n-1)
矩形覆盖:f(n)=f(n-1)+f(n-2)

全部用循环代替递归,使时间复杂度为O(n).

代码

public class Solution {
    public int Fibonacci(int n) {
        if(n==0){return 0;}
        if(n==1){return 1;}
        if(n==2){return 1;}
        int preNum1=1,preNum2=1;
        for(int i=3;i<=n;++i){
            int tempPreNum2=preNum2;
            preNum2+=preNum1;
            preNum1=tempPreNum2;
        }
        return preNum2;
    }
}
原文地址:https://www.cnblogs.com/coding-gaga/p/10645589.html