问题是
“您正在爬楼梯。每次您可以走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; }
谢谢,
好吧,首先,您需要了解递归公式,以及我们如何从中得出迭代公式。
递归公式为:
f(n) = f(n-1) + f(n-2) f(0) = f(1) = 1
(f(n-1)对于一个步骤,f(n-2)对于两个步骤,总数是使用这些选项之一的方式的数量-求和)。
f(n-1)
f(n-2)
如果仔细看-这也是一个众所周知的系列- 斐波那契数,并且解决方案只是简单地计算每个数字,而不是一遍又一遍地重新计算递归,从而得到更有效的解决方案。