当前位置 博文首页 > qq_36098862的博客:循环算法与递归算法效率问题
今日在某网刷到一道算法题,题目比较简单:
斐波那契数,通常用?F(n)
表示,形成的序列称为斐波那契数列。该数列由?0
和 1
开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,? ?F(1)?= 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
给定?N
,计算?F(N)
。
本人答案:
class Solution {
public int fib(int N) {
if(N<=1){
return N;
}else{
return fib(N-1)+fib(N-2);
}
}
}
在提交执行时间为28ms? 看了之前 执行用时1ms的大神的代码:
class Solution {
public int fib(int N) {
if(N<=1){
return N;
}
int[] x=new int[N+1];
x[0]=0;
x[1]=1;
for(int i=2;i<=N;i++){
x[i]=x[i-1]+x[i-2];
}
return x[N];
}
}
总结:递归的实现其实是一个栈处理的过程,相比于同条件下的循环处理,在时间效率上有明显不足,当然整体代码的效率还取决于代码段中变量的定义以及数量以及其他的占用时间的处理。总结就是同等条件下,递归要比循环慢。
注:刷题中偶遇随手一记,不喜勿喷。
cs