Recursion 证明递归函数的上界复杂性?

Recursion 证明递归函数的上界复杂性?,recursion,big-o,time-complexity,Recursion,Big O,Time Complexity,我对如何使用数学归纳法证明递归函数的大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呢?一种可能的方法是:为T假设一个非递归公式并证明它。之后,证

我对如何使用数学归纳法证明递归函数的大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呢?

一种可能的方法是:为
T
假设一个非递归公式并证明它。之后,证明你找到的公式是你想要的大O

为了证明,你可以使用归纳法,在这种情况下,归纳法又快又容易。要做到这一点,您首先要证明您的公式适用于第一个值(通常是
0
1
,在您的示例中,这是
1
,非常简单)

然后显示,如果它对任何数字
n-1
,它也会对后续的
n
保持不变。为此,您使用了
T(n)
(在您的示例中是
T(n)=2t(n-1)+1
):您知道您的formla适用于
n-1
,您可以用公式替换
T(n-1)
。在你的例子中,你得到(用公式
T(n)=2^n-1

如您所见,如果我们假设它适用于
n-1
,它适用于
n

现在是归纳的技巧:我们证明了我们的公式适用于
n=1
,并且我们证明了如果它适用于任何
n=k-1
,它也适用于
k
。也就是说,正如我们为
1
所证明的那样,它也为
2
所证明。正如它被证明适用于
2
,它也被证明适用于
3
。事实上


因此,在我们的证明中,我们并没有假设n-1的术语为真,我们只是在假设它为真的情况下做了一个陈述,然后为一个初始情况证明了我们的公式,并使用了归纳法。

我将把它作为堆栈交换站点来问,因为它更适合那里。这与Java无关。在数学归纳法中,“假设”并不是你真正假设为真的东西。这是一个充分条件的陈述。你希望展示的是,如果一个数字的条件为真,那么它在逻辑上意味着下一个数字的结论也成立。然后,证明第一个数的条件为真,并结合该条件的含义,通过无穷多个整数级联来证明结论。这就是归纳法的工作原理。如果一些不同的变量选择使数学更方便,那没关系。@jpw实际上,如果你看一下标记的描述,它会说纯数学问题与主题无关。@jpmc26我在帖子上没有看到任何归纳标记,我相信,得到一个好答案的机会会更好,或者也许会更好,尽管这一点现在没有意义,因为它已经被回答了。你数学的第一步让我困惑。您可能需要添加一个额外的步骤来显示您正在为像我这样的厚脑袋分发2
T(n) = 2T(n - 1) + 1
     = 2(2^(n - 1) - 1) + 1
     = 2^n - 2 + 1
     = 2^n + 1