我一直在完成最近的计算机科学作业,涉及递归和大 O 表示法。我相信我非常了解这一点(当然,当然不完美!)但是有一个问题特别给我带来了最多的问题。奇怪的是,看着它,它看起来是作业中最简单的一个。
使用 big-Oh 表示法提供最佳增长率来解决以下递归?
T(1) = 2
T(n) = 2T(n - 1) + 1 对于 n>1
选择是:
- O(n log n)
- O(n^2)
- O(2^n)
- O(n^n)
我知道大 O 用作上限,用于描述该程序或进程将花费的最多计算量或最长运行时间。我觉得这个特定的递归应该是 O(n),因为对于每个 n 值,递归最多只发生一次。由于 n 不可用,它要么比这更好,O(nlogn),要么更糟,成为其他三个选项。
所以,我的问题是:为什么不是 O(n)?