上楼的时候不要数台阶 谋楼梯共有11级台阶,某人在上楼时,至少一步跨两级台阶,问他上楼有多少种不同的走法
谋楼梯共有11级台阶,某人在上楼时,至少一步跨两级台阶,问他上楼有多少种不同的走法
谋楼梯共有11级台阶,某人在上楼时,至少一步跨两级台阶,问他上楼有多少种不同的走法
一步是至少跨两级台阶吗?
感觉与现实不符,
是否可以改成“至多一步跨两级”?
这样的话,可以用递推方法:
设有n级台阶的走法为a(n)
则a(n)=a(n-1)+a(n-2) (n≥3时)
【传说中的“斐波拉切”数列,
俗称“兔子数列”】
a1=1
a2=2
a3=a1+a2=3
a4=a2+a3=5
a5=a3+a4=8
a6=a4+a5=13
a7=a5+a6=21
a8=a6+a7=34
a9=a7+a8=55
a10=a8+a9=89
a11=a9+a10=144
答案是144种
楼梯有20阶台阶,上楼可以一步上1阶,也可以一步上2阶,计算共有多少种不同的走法
解: 1 2 3 4 5 6 7 8 9 10
1+C19+C18+C17+C16+C15+C14+C13+C12+C11+C10
=1+19+153+680+680+3003+3003+1716+495+55+1
=9806
①楼梯有10阶台阶,上楼可以一步上1阶,也可以一步上2阶,计算共有多少种不同的走法?
int recursive(int n){ if (n <= 2) return n; return recursive(n - 1) + 2 * recursive(n - 2);}int iterative(int n){ int f1 = 1, f2 = 2, f; for (int i = 3; i <= n; ++i) { f = f2 + 2 * f1; f1 = f2; f2 = f; } return f; }
希望能解决您的问题。
某人上楼梯,一步可以上1,2,3个台阶,楼梯共12个台阶,从地面走上去有多少种不同走法
9种
某人上楼梯,一步可以跨上1个台阶,2个台阶,或者3个台阶.共有12个台阶,从地面走上去有多少种不同走法?
设有n阶台阶,既然一次只能走一步或2步或3步,那么假设现在仅剩下最后一步要走,
有三种情况:
一 只需要走一步,这时已经走了(n-1)阶,走法与走n-1阶相同,有f(n-1)阶走法;
二 只需要走两步,同上分析有f(n-2);
三 只需要走三步,有f(n-3);
所以走n阶台阶有f(n)=f(n-1)+f(n-2)+f(n-3)种走法;
很明显,走1阶台阶有1种方法;
走2阶有两种走法;
走3阶有4种走法,如下:1 1 1 1 2 2 1 3;
列出总台阶数与走法的对应表:
1 2 3 4 5 6 7 8 9 10 11 12
1 2 4 7 13 24 44 81 149 274 504 927
所以有927种走法
一段楼梯有12级,每一步可以向上迈一级台阶,也可以迈两级台阶,共有多少种上楼方法?
233

这是一个经典的递回问题。也就是费波纳西级数。
f(n) = f(n-1) + f(n-2)。
我来解释,如果我们第一部选1个台阶,那么后面就会剩下n-1个台阶,也就是会有f(n-1)种走法。如果我们第一部选2个台阶,后面会有f(n-2)个台阶。因此,对于n个台阶来说,就会有f(n-1) + f(n-2)种走法。
因此,1个台阶f(1) = 1.
f(2) = 2,
f(3) = 3
f(4) = 5
f(5) = 8
f(6) = 13
f(7) = 21
f(8) = 34
f(9) = 55
f(10) = 89
f(11) = 89+55 = 144
f(12) = 144 + 89 = 233
一个楼梯共有10级台阶,小王一步可以迈一级台阶、或两级台阶,那么小王登上第5级台阶共有多少种方法
当有五级台阶时,可分情况讨论:①逐级上1个,那么有一种走法;
②上一个台阶和上二个台阶合用,那么有:
1、1、1、2;
1、1、2、1;
1、2、1、1;
2、1、1、1;
1、2、2;
2、2、1;
2、1、2;
共7种走法;
7+1=8(种)
综上可知:共8种走法.
答:小王登上第5级台阶共有8种方法.
有一段楼梯台阶有16阶,小明一步最多能跨3阶,则小明上台阶有多少种不同的走法
8个台阶的不同走法如下:
全部两步的方法有1个
全部只走一步的方法有1个
2个一步,3个2步的方法有(5!)/(2!*3!)=10个
4个一步,2个2步的方法有(6!)/(4!*2!)=15个
6个一步,1个2步的方法有(7!)/(6!)=7个
所以从地面到最上面有(1+1+7+10+15)个=34个方法