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 }
相關文章
相關標籤/搜索