n楼梯/爬坡问题:无法概念化为什么T(n)= T(n-1)+ T(n-2)

时间:2019-06-21 07:31:45

标签: algorithm recursion dynamic-programming fibonacci

我在概念上难以理解众所周知的n阶梯攀爬问题的解决方案。 n级问题是:

您有n步要爬。您一次只能爬1或2步。找到到达第N步的方法。

为简单起见,我们仅使用n = 2的情况。解决方案是T(n) = T(n-1) + T(n-2),这当然是斐波那契数列。

关于 为什么 的解释通常是这样的:

  

您处于第n步。假设您一次可以爬1步或2步,您是如何到达那里的?好吧,您的上一步必须在步骤n-1(采取1步)或步骤n-2(采取2步)中。现在,有T(n-1)种方法可以达到第n-1个步骤,还有T(n-2)种方法可以达到第n-2个步骤,这意味着有T(n-2)种方法可以达到n如果您的最后一步是在n-2,并且如果您的最后一步是在T(n-1),则n到达n-1的方式。这是您最终达到n的仅有的两种可能性,因此,达到第n步的方法总数为T(n-1) + T(n-2)

我在构思下面的部分时遇到困难:

  

T(n-1)种方法可以达到第n-1个步骤,还有T(n-2)种方法可以达到第n-2个步骤,这意味着有T(n-2)种方法可以达到{{1} },如果您的最后一步是在n,如果您的最后一步是在n-2,则T(n-1)是到达n的方式。

这听起来是错误的。这种解释似乎是矛盾的。

  

n-1种方法可以达到第n-1个步骤

  如果您的最后一步是在T(n-1),则

T(n-1)到达n的方式

对于n-1

我还对第二点感到困惑。当我们说解决方案是T(n-2)时,我的大脑大喊“但是等一下,您正在重复计算。 T(n-1)已经 包括 T(n-2)'。

有人可以从概念上帮助我了解T(n-1) + T(n-2)

的原因吗?

PS这不是关于实施解决方案的问题,而是关于如何解释/理解答案的问题。

2 个答案:

答案 0 :(得分:2)

  

T(n) = T(n-1) + T(n-2)

的原因

您引用的帖子需要(在我看来是)查看流程的结束的奇怪步骤。

让我们考虑一下,当我们处于流程的开始时,在n阶梯的底部。我们现在可以做什么

  • 我们可以采取1步,这使我们面临n-1问题的解决

OR

  • 我们可以采取2个步骤,这使我们需要解决n-2问题。

很显然,我们要么一个做,要么另一个做。因此,解决n问题的方法的数量正好是解决n-1问题的方法的数量加上解决n-2问题的方法的数量。

或者,T(n) = T(n-1) + T(n-2)

答案 1 :(得分:0)

当然,您在T(n-1)T(n-2)中计算了一些重复的路径。但是,进入决赛的最后一步是不同的!所以,这样想。最后一步可能是1或2。现在,从这种分离中,您将获得不同的路径,并且您不必担心建模中的任何事情。

相关问题