小编典典

解释这个动态编程的n阶代码

algorithm

问题是

“您正在爬楼梯。每次您可以走1步或2步。楼梯有n步。您可以通过几种不同的方式爬楼梯?”

以下是此问题的代码解决方案,但我很难理解。谁能解释我

int stairs(int n) {
  if (n == 0) return 0;
  int a = 1;
  int b = 1;
  for (int i = 1; i < n; i++) {
    int c = a;
    a = b;
    b += c;
  }
  return b;
 }

谢谢,


阅读 276

收藏
2020-07-28

共1个答案

小编典典

好吧,首先,您需要了解递归公式,以及我们如何从中得出迭代公式。

递归公式为:

f(n) = f(n-1) + f(n-2)
f(0) = f(1) = 1

f(n-1)对于一个步骤,f(n-2)对于两个步骤,总数是使用这些选项之一的方式的数量-求和)。

如果仔细看-这也是一个众所周知的系列-
斐波契数,并且解决方案只是简单地计算每个数字,而不是一遍又一遍地重新计算递归,从而得到更有效的解决方案。

2020-07-28