斐波那契序列(java版)

【题目描述】大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39

【分析】
1. 斐波那契序列满足:
F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
2. 如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

【解题思路1】
//1. 利用通项公式来解答

public class Solution {
    public int Fibonacci(int n) {
        if(n==1 || n==2 ){
            return 1;
        }else{
            double temp = Math.sqrt(5);
            int res = (int)((1/temp)*(Math.pow((temp+1)/2, n)-Math.pow((1-temp)/2,n)));
            return res;
        }
    }
}

【解题思路2】
//1. 利用之前的归纳公式,记录F(n-1)和F(n-2)。然后循环求解。
//2. 单纯的递归,在遇到大的测试用例时,容易溢出 。

public class Solution {
    public int Fibonacci(int n) {
        int preNum=1;
        int prePreNum=0;
        int result=0;
        if(n==0)
            return 0;
        if(n==1)
            return 1;
        for(int i=2;i<=n;i++){
            result=preNum+prePreNum;
            prePreNum=preNum;
            preNum=result;
        }
        return result;
    }
}

你可能感兴趣的:(java,剑指offer-java)