T(n) = T(n - sqrt(n))

发布于 2024-10-26 02:35:22 字数 42 浏览 1 评论 0原文

有谁知道如何解决这个复发问题?

主定理在这里不起作用。

Does anyone know how to solve this recurrence?

Master Theorem doesn't work here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抱着落日 2024-11-02 02:35:22

这在 O(1) 中似乎很明显,因为

T(n) = T(n - sqrt(n)) = T(m) with 0 < m < n

通过归纳,您可以得到 T(n) = T(epsilon),其中 epsilon 接近 0。

如果是 T(n) = T(n - sqrt(n),这个问题就更有意义了) + 米

It seems obvious in O(1) since

T(n) = T(n - sqrt(n)) = T(m) with 0 < m < n

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

请别遗忘我 2024-11-02 02:35:22

你是对的,马斯特斯定理在这里不适用。如果你仔细观察,你会发现递归的成本为零(右侧没有空闲元素: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 because n > 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文