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,算法都是核心==
最后配上图片