fibonacci算法

求Fibonacci数列的第n项,这个数列是这样定义的:

fib(0)=1
fib(1)=1
fib(n)=fib(n-1)+fib(n-2)

如下:1 ,1 ,2 ,3 ,5 ,8 ,13 ,21 ,34 ,55……


递归实现:(时间复杂度O(n^2))


int fib(int n)
{
        if(n == 0||n == 1)
                return 1;
        else
                return fib(n-1)+fib(n-2);
}


递推实现:(时间复杂度O(n))

int fib(int n)
{
        if(n == 0||n == 1)
                return 1;
        else{
                int i,x,y,fn;
                x=0,y=1,fn=0;
                for( i=1; i<=n; i++){
                        fn = y + x;
                        x = y;
                        y = x;
                }
                return fn;
        }
}
/*实际用时int类型小些,应换为long型*/



你可能感兴趣的:(fibonacci算法)