1. 程式人生 > >YTU-3127.遞迴——爬樓梯

YTU-3127.遞迴——爬樓梯

Description
樹老師爬樓梯,他可以每次走1級或者2級,輸入樓梯的級數, 求不同的走法數
例如:樓梯一共有3級,他可以每次都走一級,或者第一次走一 級,第二次走兩級,也可以第一次走兩級,第二次走一級,一 共3種方法。
Input
輸入包含若干行,每行包含一個正整數N,代表樓梯級數,1 <= N <= 30輸出不同的走法數,每一行輸入對應一行
Output
不同的走法數,每一行輸入對應一行輸出
Sample Input
5
8
10
Sample Output
8
34
89

由題目不難看出這是一個斐波那契數列。比如有10階樓梯,那麼第10階可以由第8層和第9層到達,那麼 第10階的走法 = 第9階的走法 + 第8階的走法。(仔細想想不難想明白的吧。)可以在紙上模擬或者先想想第3層的走法。先把大規模的重複問題縮小化,等小規模研究透徹後,把規律放大即可。

程式碼奉上:

#include<iostream>
#include<cstdio>
using namespace std;
int loop(int m)
{
    if(m==1)
        return 1;
    if(m==2)
        return 2;
    else
        return loop(m-1)+loop(m-2);
}
int main()
{
    int m;
    int sum=0;
    while(scanf("%d",&m)!=EOF)
    {
        sum=loop(m);
        printf
("%d\n",sum); } return 0; }

如有不明白的,歡迎評論。
——淚目。