题目描述:
有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。
思路
台阶数量 | upstairs(n) | ||||
---|---|---|---|---|---|
1 | upstairs(1) = 1 | 一步 | |||
2 | upstairs(2) = 2 | 一步+一步 | 两步 | ||
3 | upstairs(3) = 3 | 一步+一步+一步 | 一步+两步 | 两步+一步 | 三步 |
由于最大只能走三步,从第四步开始就没有一次性跨上去这样了。
误区!
在思考最后一步之前是在哪个位置的时候,这个位置一定是可以一次直接到终点的!
比如最后一步在1这个位置,就只要思考最后一步可以直接跨三步到4这个终点。而不要思考从1到4有三步还有不同实现方法。
同理:
upstairs(5) = upstairs(4) + upstairs(3) + upstairs(2)
upstairs(n) =