微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

if-else重复发生的最坏情况运行时

如何解决if-else重复发生的最坏情况运行时

enter image description here

enter image description here

问题是询问g(n)的最坏情况下的时间复杂度,我对为什么第二个方程是c1n而不是c1n ^ 2感到困惑。

我认为最坏的情况应该具有更大的复杂性,对吗?还是因为if-else第二个分支中的“ b”是有界的,因此被视为常量?如果是这样,复发如何?因为在这种情况下n变为常数,递归的复杂度也会恒定吗?

解决方法

这里的窍门是,几乎从未选择过else分支。

您可以计算前几个值:

g(0) == 1
g(1) == 1

g(2) == 4
g(3) == 4

g(4) == 16
g(5) == 16
g(6) == 16

then for every n >= 4:
g(n) >= 16 > 5.

因此,每个n >= 12g(n/3) > 5都会出现

因此,在任何执行中,else分支在最后两个递归调用中最多被选择两次,其n的值小于11。

为求完美,我认为答案应该说恒定成本 c0 适用于n <= 11

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。