0毫秒搞定斐波那契,PK掉100%提交者

1引言

对于斐波那契数列,大家学了递归应该不陌生,常规解法都是用递归实现,但是这样的时间复杂度是O(2^n)

int fib(int N){
    if(N == 0) return 0;
    if(N == 1) return 1;
    return fib(N-1) + fib(N-2);
}

在这里插入图片描述
我们把每调用一次函数f(n)看成执行一次,那么如果传入的参数是5,就调用了1+2+4+8+…=(2^n)-1

所以很耗时间。。。。。

2 牛叉解法

既然斐波那契是使前一个数与在前一个数相加,那我们
我们只需要用两个参数,second表示当前累加的结果,而first始终是second的前一个数

int fib(int N) {
        if(N<=1) return N;
        int second =1;
        int first=0;
        for(int i=1;i<N;i++)
        {
            second+=first;
            first=second-first;
        }
        return second;
    }
};

时间复杂度为O(N);

3 总结

			=要知道算法的好坏直接决定着一个程序的好坏,算法很重要,不论是C,C++,JAVA,Python,算法都是核心==

最后配上图片
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46273997/article/details/104830140