我知道斐波纳契算法可以在没有递归的情况下进行编程,如下所示:
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);所以它似乎更有效率,我的微积分是否可行,或者非递归解决方案是否有任何隐藏的复杂性?
答案 0 :(得分:2)
单独评估实施的复杂性。在这种情况下,与输入n相关的复杂性由for循环定义,其与n的大小成正比。因此,复杂度为O(n) - 线性。