Fibonacci系列的时间复杂性

时间:2015-03-08 14:58:43

标签: c++ time-complexity fibonacci

long int F(int n){
 long int F[n];
 if (n<2) return n;
 else {
      F[0]=0; F[1]=1;
      for (int i=2; i<n+1; i++)
         F[i]=F[i-1]+F[i-2];
      return F[n]; }
 }

大家好,有谁能知道如何计算上述函数的时间复杂度?我正在研究C ++,我对随机算法的计算时间复杂度感到非​​常痛苦。请帮我!提前谢谢。

3 个答案:

答案 0 :(得分:1)

显示的代码依赖于g ++语言扩展,可变长度数组。

即。它不是标准的C ++。

对于两个不同的事情,代码也使用名称F误导了一点。

请注意,代码通过将数组索引到其结尾之后显示未定义行为

除此之外,它是微不足道的。

当代码被更正或被视为伪代码时,执行 n -1操作会产生复杂度O( n )。

答案 1 :(得分:0)

对于这个程序,复杂性是O(n)

答案 2 :(得分:0)

由于算法使用memoization,因此时间和空间复杂度为线性 O(n)

通常,时间复杂度涉及数据的会计比较操作,在这种情况下缺少(唯一真正的比较操作是绑定检查),因此线性复杂性由F[i-1]+F[i-2]操作给出。