是没有递归线性的斐波那契算法吗?

时间:2014-10-19 14:41:03

标签: recursion

我知道斐波纳契算法可以在没有递归的情况下进行编程,如下所示:

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);所以它似乎更有效率,我的微积分是否可行,或者非递归解决方案是否有任何隐藏的复杂性?

1 个答案:

答案 0 :(得分:2)

单独评估实施的复杂性。在这种情况下,与输入n相关的复杂性由for循环定义,其与n的大小成正比。因此,复杂度为O(n) - 线性。