剑指offer 07斐波那契数列

现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39

java版本:

public class Solution {

    public static void main(String[] args) {
        long startTime=System.currentTimeMillis();
        System.out.println("第39项是:"+Fibonacci(39));
        long endTime = System.currentTimeMillis(); 
        System.out.println("程序运行的时间 :"+(endTime-startTime)+"ms");
        // TODO Auto-generated method stub

    }
    /*采用循环,存取中间项。速度快*/
    /*public static int Fibonacci(int n) {
        int a=1,b=1,c=0;
        if(n<0){
            return 0;
        }else if(n==1||n==2){
            return 1;
        }else{
            for(int i=3;i<=n;i++){
                c=a+b;
                b=a;
                a=c;
            }
            return c;
        }
    }*/
    /*递归,简单,但是速度慢,数字越大,运行时间越长*/
    public static int Fibonacci(int n){
                 if(n==0)
                     return 0;
                 if(n==1)
                    return 1;
                 return Fibonacci(n-1)+Fibonacci(n-2);
    }


}

js版本:

function Fibonacci(n)
{
        if(n==0){
            return 0;
        }
       if(n==1||n==2){
            return 1;
        }
        var a=1,b=1,c=0;
        for(var i=3;i<=n;i++){
             c=a+b;
             b=a;
             a=c;
        }
    return c;// write code here
}

总结:核心思想就是c=a+b;b=a;a=c;这三项。每一次先确定c的值,然后把上一次a的值赋值给b,再把本次的c的值赋值给a,每一次for循环向后走一次。

 

posted @ 2018-07-31 19:24  无敌小阿没  阅读(241)  评论(0编辑  收藏  举报