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

Recursion 它是没有递归线性的斐波那契算法吗?,recursion,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; } intfibo(intn){ if(n自行评估实现的复杂性

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

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;
}
intfibo(intn){

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

不同的算法可能具有不同的复杂性,即使它们计算相同的东西。例如,有几种
O(n^2)
排序算法,还有几种
O(n log n)
排序算法。再看看斐波那契数可以表示为一个单一的非递归方程:但这里还有一个额外的因素:斐波那契数中的位数随着序列的进行而增加。因此,对于恒定的位大小,计算1的复杂度是线性的(因此对可计算的数字计数有限制),但对于可变位大小,它将不是线性的。