Function 求解递归T(n)=log(T(n-1))+;1.

Function 求解递归T(n)=log(T(n-1))+;1.,function,recursion,Function,Recursion,我试图解决这个递归: T(n)=log(T(n-1))+1 :n>2 T(n)=O(1) :n=2 我得到的答案是O(1),但我觉得我遗漏了什么 我很乐意得到一些帮助 提前谢谢 对于任何>=1.0的值,您的递归关系收敛到1.0 你对的回答非常正确。您可能会被递归关系以如此直观的时间方式表达而不是被赋予算法而感到有些困惑 让我再试一次。而且,也许我

我试图解决这个递归:

                            T(n)=log(T(n-1))+1    :n>2
                            T(n)=O(1)             :n=2
我得到的答案是O(1),但我觉得我遗漏了什么

我很乐意得到一些帮助


提前谢谢

对于任何>=1.0的值,您的递归关系收敛到1.0

你对的回答非常正确。您可能会被递归关系以如此直观的时间方式表达而不是被赋予算法而感到有些困惑


让我再试一次。而且,也许我们都有点困惑。我只接听一个电话;也许你需要一个全面的答案(现在我想起来更可能)

首先,我们打个电话。如果n=2,则为常数时间。如果n>2。。。这是我不太熟悉的符号。这是表示单个调用的时间,还是表示整个递归序列下降到n=2的时间?出于实际考虑,我认为这必须是一次通话。这使我先前的回答不正确

看看n=3的调用。这将扩展并解决如下问题:

T(3) = log(T(2)) + 1
T(3) = log(1) + 1
T(3) = 0 + 1 = 1
通过感应T(n)=1表示n>=2。事实证明,即使基本情况T(2)的值不是1,只要它是有限的且大于1/(无论我们对日志使用什么基),序列也会收敛到1,并且每次调用的时间都是恒定的

因此,为了求解T(n),我们有n-2个调用,每个调用都是T(1)。这使得总体复杂度为O(n)


这更清楚吗?

对于任何>=1.0的值,您的递归关系收敛到1.0

你对的回答非常正确。您可能会被递归关系以如此直观的时间方式表达而不是被赋予算法而感到有些困惑


让我再试一次。而且,也许我们都有点困惑。我只接听一个电话;也许你需要一个全面的答案(现在我想起来更可能)

首先,我们打个电话。如果n=2,则为常数时间。如果n>2。。。这是我不太熟悉的符号。这是表示单个调用的时间,还是表示整个递归序列下降到n=2的时间?出于实际考虑,我认为这必须是一次通话。这使我先前的回答不正确

看看n=3的调用。这将扩展并解决如下问题:

T(3) = log(T(2)) + 1
T(3) = log(1) + 1
T(3) = 0 + 1 = 1
通过感应T(n)=1表示n>=2。事实证明,即使基本情况T(2)的值不是1,只要它是有限的且大于1/(无论我们对日志使用什么基),序列也会收敛到1,并且每次调用的时间都是恒定的

因此,为了求解T(n),我们有n-2个调用,每个调用都是T(1)。这使得总体复杂度为O(n)


这更清楚吗?

n
有任何限制吗?应该大于
0
还是什么?你的密码在哪里?谢谢我编辑了这篇文章。你问什么还不清楚。没有代码表明您甚至在尝试<代码>T(n)=O(1):n=2这是什么
T(2)=O(1)
what???堆栈溢出用于回答有关编写代码的问题。你的问题离题了。我建议将它移到另一个位置,因为它也有点模糊,所以您可能希望查看它们的
n
是否有任何限制?应该大于
0
还是什么?你的密码在哪里?谢谢我编辑了这篇文章。你问什么还不清楚。没有代码表明您甚至在尝试<代码>T(n)=O(1):n=2这是什么
T(2)=O(1)
what???堆栈溢出用于回答有关编写代码的问题。你的问题离题了。我建议将它移到另一个位置,因为它也有点模糊,所以您可能想回顾一下他们的回答,非常感谢您的回答。不过,这个解决方案对我来说仍然没有意义。非常感谢您的扩展。根据你的解释,我通过归纳法理解:如果T(n-1)=1,那么T(n)=log(T(n-1))+1=log(1)+1=1。所以T(n)=O(1)。这似乎不适合我。也许T(n-1)=c,当c是常数时,然后:T(n)=log(T(n-1)+1=log(c)+1,它不等于O(1)?非常感谢你的回答。不过,这个解决方案对我来说仍然没有意义。非常感谢你的扩展。从你的解释,我通过归纳理解:如果T(n-1)=1,那么T(n)=log(T(n-1))+1=log(1)+1。所以T(n)=O(1) 这对我来说似乎不合适。当c是常数时,可能t(n-1)=c,然后:t(n)=log(t(n-1)+1=log(c)+1,它不等于O(1)?