如何解决通过算法时间复杂度分析得出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
的恒定时间计算。因此:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。