有一段楼梯有8段台阶,规定每一步可跨一级两级或三级,要登上第八级台阶,有几种不同的走法
要登上8级台阶共有34种不同走法。
解答:解:第一级:只跨1步,有1种。
第二级:(1、1),(2),有2种。
第三级:(1、1、1),(1、2),(2、1),有1+2=3种。
第四级:(1、1、1、1),(1、1、2),(2、1、1),(2、2),(1、2、1),有2+3=5种。
第五级:有3+5=8种。
可以发现从第三次开始,后一种情况总是前两种情况的和。
所以,第六级:有5+8=13种。
第七级:有8+13=21种。
第八级:有13+21=34种。
本题考查了裴波那契数列,实际这就是著名的兔子数列。
斐波那契数列含义:
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34在数学上。
斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。
推荐于2017-09-23
我这里把地面当作第0段台阶,跨一步就到第一段台阶,总共8层台阶
这种考虑和爬楼梯是不一样的,因为楼梯的2楼其实才爬了一层,而地面已经算作是1楼了(虽然称作1楼,但其实还没有开始爬)。
一、分析过程:
登上第1段:1种
登上第2段:2种 (要么是从第1级直接迈上来2层,要么分两次各跨一层才到第2层)
登上第3段:4种 (可以从第1级直接迈上来三层;也可以先到第一层,再直接跨两层;也可以先到第二层,再跨一层;还可以分三次分别跨一层)
登上第4段: 1 + 2 + 4 = 7种(要么从第1级迈上来;要么从第2级迈上来;要么从第3级迈上来,所以是前面三层方式之和)
登上第5段: 2 + 4 + 7 = 13种
登上第6段: 4 + 7 + 13 = 24种 (要么从第3级迈上来;要么从第4级迈上来;要么从第5级迈上来,所以是前面三层方式之和)
登上第7段: 7 + 13 + 24 = 44种
登上第8段:13 + 24 + 44 = 81种(要么从第5级迈上来;要么从第6级迈上来;要么从第7级迈上来,所以是前面三层方式之和)
.........
登上第9段: 24 + 44 + 81 = 149种
登上第10段:44 + 81 + 149 = 274种(要么从第7级迈上来;要么从第8级迈上来;要么从第9级迈上来,所以是前面三层方式之和)
.........
所以到第八段台阶的答案为: 81种.
二、列成表格形式:
台阶 规定每一步最多3段台阶 规定每一步只最多2段台阶 每一步只能跨两级或三级
地面 f(n) = f(n-1) + f(n-2) + f(n-3) f(n) = f(n-1) + f(n-2) f(n) = f(n-2) + f(n-3)
1段 1种 1种 0种
2段 2种 2种 1种
3段 4种 3种 1种
4段 7种 5种 1种
5段 13种 8种 2种
6段 24种 13种 2种
7段 44种 21种 3种
8段 81种 34种 4种
9段 149种 55种 5种
10段 274种 89种 7种
11段 504种 144种 9种
12段 927种 233种 12种
13段 1705种 377种 16种
14段 3136种 610种 21种
15段 5768种 987种 28种
16段 10609种 1597种 37种
17段 19513种 2584种 49种
18段 35890种 4181种 65种
19段 66012种 6765种 86种
20段 121415种 10946种 114种
11段 223317种 17711种 151种
22段 410744种 28657种 200种
23段 755476种 46368种 265种
24段 1389537种 75025种 351种
25段 2555757种 121393种 465种
26段 4700770种 196418种 616种
27段 8646064种 317811种 816种
28段 15902591种 514229种 1081种
........
我这里把地面当作第0段台阶,跨一步就到第一段台阶,总共8层台阶这种考虑和爬楼梯是不一样的,因为楼梯的2楼其实才爬了一层,而地面已经算作是1楼了(虽然称作1楼,但其实还没有开始爬)。
一、分析过程:登上第1段:1种登上第2段:2种 (要么是从第1级直接迈上来2层,要么分两次各跨一层才到第2层)登上第3段:4种 (可以从第1级直接迈上来三层;也可以先到第一层,再直接跨两层;也可以先到第二层,再跨一层;还可以分三次分别跨一层)登上第4段: 1 + 2 + 4 = 7种(要么从第1级迈上来;要么从第2级迈上来;要么从第3级迈上来,所以是前面三层方式之和)登上第5段: 2 + 4 + 7 = 13种登上第6段: 4 + 7 + 13 = 24种 (要么从第3级迈上来;要么从第4级迈上来;要么从第5级迈上来,所以是前面三层方式之和)登上第7段: 7 + 13 + 24 = 44种登上第8段:13 + 24 + 44 = 81种(要么从第5级迈上来;要么从第6级迈上来;要么从第7级迈上来,所以是前面三层方式之和)
.........登上第9段: 24 + 44 + 81 = 149种登上第10段:44 + 81 + 149 = 274种(要么从第7级迈上来;要么从第8级迈上来;要么从第9级迈上来,所以是前面三层方式之和).........
所以到第八段台阶的答案为: 81种.
二、列成表格形式:台阶 规定每一步最多3段台阶 规定每一步只最多2段台阶 每一步只能跨两级或三级地面 f(n) = f(n-1) + f(n-2) + f(n-3) f(n) = f(n-1) + f(n-2) f(n) = f(n-2) + f(n-3)1段 1种 1种 0种 2段 2种 2种 1种 3段 4种 3种 1种 4段 7种 5种 1种 5段 13种 8种 2种 6段 24种 13种 2种 7段 44种 21种 3种 8段 81种 34种 4种 9段 149种 55种 5种 10段 274种 89种 7种 11段 504种 144种 9种 12段 927种 233种 12种 13段 1705种 377种 16种 14段 3136种 610种 21种 15段 5768种 987种 28种 16段 10609种 1597种 37种 17段 19513种 2584种 49种 18段 35890种 4181种 65种 19段 66012种 6765种 86种 20段 121415种 10946种 114种 11段 223317种 17711种 151种 22段 410744种 28657种 200种 23段 755476种 46368种 265种 24段 1389537种 75025种 351种 25段 2555757种 121393种 465种 26段 4700770种 196418种 616种 27段 8646064种 317811种 816种28段 15902591种 514229种 1081种........
fibonacci递推式。f[i]=f[i-1]+f[i-2];
前提:f[0]=1,f[1]=1.
所以有34种上第八层的方法。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int f[15];
f[1] = 1;
f[2] = 2;
for (int i = 3; i <= n; ++i)
f[i] = f[i - 1] + f[i - 2];
cout << f[n] << endl;
return 0;
}