介绍

一、题目

写一个函数,输入n,求斐波那契数列的第n项值。

斐波那契数列的定义如下:

二、解题思路

按照上述递推式,可以使用循环或递归的方式获取第n项式。

三、解题代码

public class Test {  

    /** 
     * 写一个函数,输入n,求斐波那契(Fibonacci) 数列的第n项 
     * @param n Fibonacci数的项数 
     * @return 第n项的结果 
     */  
    public static long fibonacci(int n) {  

        // 当输入非正整数的时候返回0  
        if (n <= 0) {  
            return 0;  
        }  

        // 输入1或者2的时候返回1  
        if (n == 1 || n == 2) {  
            return 1;  
        }  

        // 第n-2个的Fibonacci数的值  
        long prePre = 1;  
        // 第n-1个的Fibonacci数的值  
        long pre = 1;  
        // 第n个的Fibonacci数的值  
        long current = 2;  

        // 求解第n个的Fibonacci数的值  
        for (int i = 3; i <= n ; i++) {  
            // 求第i个的Fibonacci数的值  
            current = prePre + pre;  
            // 更新记录的结果,prePre原先记录第i-2个Fibonacci数的值  
            // 现在记录第i-1个Fibonacci数的值  
            prePre = pre;  
            // 更新记录的结果,pre原先记录第i-1个Fibonacci数的值  
            // 现在记录第i个Fibonacci数的值  
            pre = current;  
        }  

        // 返回所求的结果  
        return current;  
    }   
}