分析斐波那契计算的复杂度

斐波那契数列的定义
渐进分析 - 图1

迭代的算法

  1. int F(int n) {
  2. int less = 1, bigger = 1;
  3. int temp, i;
  4. for (i = 2; i < n; ++i) {
  5. temp = less + bigger;
  6. std::swap(less, bigger);
  7. bigger = temp;
  8. }
  9. return less + bigger;
  10. }

时间复杂度为:渐进分析 - 图2

递归的算法

  1. int F(int n) {
  2. if (n == 0 || n == 1) return 1;
  3. return F(n - 1) + F(n - 2);
  4. }

时间复杂度为:渐进分析 - 图3

对于这种递归的算法,可以将过程值储存起来,从而降低时间复杂度