题目:
楼梯有n阶台阶,一次可以上1阶、2阶或者3阶台阶,使用递归的方法计算出有多少种走完楼梯的方式。
解题思路
图解:
思路:
可以推导出来:
到台阶 n (n > 2)的方式:从台阶 (n - 3) 一次走三步 + 从台阶 (n - 2) 走两步, 从台阶 (n - 1) 走一步
-
从第四个开始都是把前面的步骤都加起来,形成一个递归的规则
递归代码:
- int steps(int num) {
- if (num < 0)
- return 0;
- if (num == 0 || num == 1)
- return 1;
- if (num == 2)
- return 2;
- return steps(num - 1) + steps(num - 2) + steps(num - 3);
- }