通过算法时间复杂度分析得出Big O符号

问题描述

hexColor(0x24B491)   // r 0.141 g 0.706 b 0.569 a 1.0

我做了以下事情: 第3行和第4行各计数1个。我不知道计算5和6行将被检查的次数。既然是递归的,我该如何得出大的O表示法?

解决方法

您可能只是通过在一张纸上写下一些小的输入(例如i == 3)所调用的函数的样子就可以最好地理解这一点:

            m(3)
       /           \
    m(2)           m(2)
  /      \       /      \
m(1)     m(1)  m(1)     m(1)

应该清楚的是,在每个级别,函数调用的数量都增加了一倍。这是指数行为,因此复杂度大致为O(2^n),其中n是输入值。

,

递归公式为:

现在,展开公式并使用数学归纳法:

对于i=1,我们假设有T(1) = 1的恒定时间计算。因此: