1500【自定义函数】走楼梯

描述

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

输入

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

输出

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

输入样例 1 

9

输出样例 1

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 }

由于题目要求用自定义函数来解答,所以我们还要把它改成自定义函数的形式。

 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 }
原文地址:https://www.cnblogs.com/cyk20081108/p/14351557.html