1500【自定义函数】走楼梯

描述ios

已知一个楼梯有n级,小谢同窗从下往上走,一步能够走一级,也能够走两级。问:他走到第n级楼梯有多少种走法?函数

 

输入flex

一行一个正整数n,1≤n≤40。spa

 

输出code

一行一个整数,表示走到第n级有多少种走法。blog

 

输入样例 1 ci

9

输出样例 1input

55

这道题一上手时,我相信大多数人都会第一时间想到用递推来解。
可是那样作题的效率较低,方法也相对复杂,不太适合刚入门C++的新手。
我使用的这个方法是源自曾经刷过的一个小升初的原题。
咱们从1开始。
楼梯级数 可采用方法数
1 1
2 2
3 3
4 5
5 8












从表格能够看得出来,随着楼梯级数的增长,可采用方法数也随之增长。
增长的规律就十分眼熟了,能够看得出来增长的规律遵循着斐波那契数列的规则。
得出这个结论后,这一题就很是简单了。咱们能够写一个很是简单的求斐波那契第n项的程序,就能够作出这道题了。
代码:
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a,b,c,k;
 6     cin>>k;
 7     a=1;
 8     b=1;
 9     for(int i=3;i<=k+1;i++)
10     {
11         c=a+b;
12         a=b;
13         b=c;
14     }
15     cout<<b;
16     return 0;
17 }

 

因为题目要求用自定义函数来解答,因此咱们还要把它改为自定义函数的形式。it

 1 #include<iostream>
 2 using namespace std;
 3 void louti(int k)
 4 {
 5     int a=1,b=1,c;
 6     for(int i=3;i<=k+1;i++)
 7     {
 8         c=a+b;
 9         a=b;
10         b=c;
11     }
12     cout<<b;
13 }
14 int main()
15 {
16     int a,b,c,k;
17     cin>>k;
18     louti(k);
19     return 0;
20 }
相关文章
相关标签/搜索