T(n) = T(n - sqrt(n))
有谁知道如何解决这个复发问题?
主定理在这里不起作用。
Does anyone know how to solve this recurrence?
Master Theorem doesn't work here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有谁知道如何解决这个复发问题?
主定理在这里不起作用。
Does anyone know how to solve this recurrence?
Master Theorem doesn't work here.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
这在 O(1) 中似乎很明显,因为
通过归纳,您可以得到 T(n) = T(epsilon),其中 epsilon 接近 0。
如果是 T(n) = T(n - sqrt(n),这个问题就更有意义了) + 米
It seems obvious in O(1) since
By induction, you get T(n) = T(epsilon) with epsilon close to 0.
The question make more sens if it was T(n) = T(n - sqrt(n)) + m
你是对的,马斯特斯定理在这里不适用。如果你仔细观察,你会发现递归的成本为零(右侧没有空闲元素:
T(n) = T(m) + f(n)
。这意味着运行递归绝对不需要任何成本(甚至不需要 1 次操作),因此只要您的 n 在迭代中减少(确实如此,因为 n > n - sqrt(n))。 ))你的递归实际上是免费的,
所以答案是
O(1)
PS,在现实生活中这是不可能的,因为你至少要做O(1)。递归的成本。You are right that the Masters theorem does not apply here. If you will look closer, you will see that the cost of recursion is zero (there is no free element on the right side:
T(n) = T(m) + f(n)
.This means that it costs you absolutely nothing to run your recursion (not even 1 operation). So as long as your
n
decreases over iterations (and it does becausen > n - sqrt(n)
) your recursion is actually free.So the answer is
O(1)
. P.S. it is not possible to have this in real life because you will do at least O(1) as the cost of recursion.