【发布时间】:2014-10-19 14:41:03
【问题描述】:
我知道斐波那契算法可以像这样在没有递归的情况下编程:
int fibo(int n){
if(n <= 1){
return n;
}
int fibo = 1;
int fiboPrev = 1;
for(int i = 2; i < n; ++i){
int temp = fibo;
fibo += fiboPrev;
fiboPrev = temp;
}
return fibo;
}
而且递归斐波那契的复杂度大约为 O(2^k),但我看到的非递归算法是 O(n);所以看起来效率更高,是我的微积分还是非递归解决方案有任何隐藏的复杂性?
【问题讨论】:
-
不同的算法可能有不同的复杂性,即使它们计算相同的东西。前任。有几个
O(n^2)排序算法,还有几个O(n log n)排序算法。 -
另外看看斐波那契数可以表示为一个单一的非递归方程:mathworld.wolfram.com/BinetsFibonacciNumberFormula.html
标签: recursion