【发布时间】:2015-07-21 01:50:02
【问题描述】:
我很困惑如何使用数学归纳法来证明使用递归关系的递归函数的大 O。
示例:
递归实现河内塔的递归关系是 T(n) = 2T(n-1) + 1
和 T(1) = 1。我们声称这种递归方法是 O(n) = 2n - 1。使用数学归纳法证明这一说法。
在递归的情况下,我是否总是假设 n = k-1,而不是 n = k?这是讲义给出的假设。
假设 f(n-1) = 2^(n-1) - 1 为真。
我理解非递归数学归纳法我们假设 n = k,因为它只是变量的变化。那么,为什么假设 n = k - 1 是安全的?
【问题讨论】:
-
我会问这个作为 Stack Exchanges Computer Science 站点,因为它更适合那里。
-
这与Java无关。标记已删除。
-
在数学归纳法中,“假设”并不是您真正假设为真的东西。它是一个充分条件的陈述。您希望展示的是,如果关于一个数字的条件为真,那么它在逻辑上暗示下一个数字也适用某个结论。然后,您证明条件对于第一个数字为真,并结合条件所暗示的内容,您通过在整数上无限级联来证明结论。这就是感应的工作原理。如果一些不同的变量选择使数学更方便,那没关系。
-
@jpw 实际上,如果你看一下induction 标签的描述,它会说纯数学问题对于 SO 来说是完全没有话题的。
-
@jpmc26 我在帖子上没有看到任何归纳标签,我相信在Computer Science 或Mathematics 上得到一个好的答案的机会会更好,尽管这一点现在还没有实际意义,因为它已经得到了回答。
标签: recursion big-o time-complexity