问题描述
楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,走完n阶台阶共有多少种不同的走法
解题思路:
假设n阶台阶有f(n)种走法,第一步有2种走法
1.如果上1阶,那就还剩n-1阶,共有f(n-1)种走法
2.如果上2节,那就还剩n-2阶,共有f(n-2)种走法
所以f(n) = f(n-1) + f(n-2).
代码如下:
class ClimbStairs
{
public:
int climb(int n)
{
if (n <= 2)
{
return n;
}
return climb(n - 1) + climb(n - 2);
}
};