问题描述
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
的恒定时间计算。因此: