【单选】上楼梯每步可上 1 级、2 级或 3 级,从地面(可视为第 0 级)走到第 8 级台阶共有多少种不同走法( )。
设 f(i) 为从地面(第 0 级)走到第 i 级的走法数,则 f(0)=1,f(i)=f(i−1)+f(i−2)+f(i−3)(负数项取 0)。只要老老实实递推到 f(8) 即可。
按斐波那契只写两项 f(i−1)+f(i−2),把每步只能跨 1 或 2 级的老模型照搬过来;或把 f(0) 设成 0 导致整体错位。
本题考查递推(动态规划思想)计数:每步可走 1、2 或 3 级,问走到第 8 级的方案数。
设 f(i) 表示从地面走到第 i 级的走法数。最后一步必然是从第 i−1 级(走 1 级)、第 i−2 级(走 2 级)或第 i−3 级(走 3 级)跨上来的,因此:
f(i) = f(i−1) + f(i−2) + f(i−3),其中 f(0) = 1(站在原地算一种方案),f(负数) = 0。
| i | 计算过程 | f(i) |
|---|---|---|
| 0 | 边界 | 1 |
| 1 | f(0)+f(−1)+f(−2) = 1+0+0 | 1 |
| 2 | f(1)+f(0)+f(−1) = 1+1+0 | 2 |
| 3 | f(2)+f(1)+f(0) = 2+1+1 | 4 |
| 4 | f(3)+f(2)+f(1) = 4+2+1 | 7 |
| 5 | f(4)+f(3)+f(2) = 7+4+2 | 13 |
| 6 | f(5)+f(4)+f(3) = 13+7+4 | 24 |
| 7 | f(6)+f(5)+f(4) = 24+13+7 | 44 |
| 8 | f(7)+f(6)+f(5) = 44+24+13 | 81 |
答案 D(81)。