用自己的思路写的写了一阵子有点复杂,学长的简单多了。

爬楼梯

Description

树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级也可以第一次走两级,第二次走一级,一共3种方法。

Input

输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30

Output

不同的走法数,每一行输入对应一行输出

Sample Input 1
5 8 10
Sample Output 1
8 34 89
Hint
多组输入

//自己写的
#include <cstdio>
#include <iostream>
using namespace std;
int count = 0;
void go(int t,int n)  //t是当前的楼梯数,n是一共几节楼梯
{
    if(t==n)
  {
    count++;
    return;
  }
  else if(t>n)
  {
    return;
  }
  else
  {
    for(int i=1;i<3;i++)
    {
      go(t+i,n);
    }
  }
}
int main()
{
    int n;
    while(cin >> n)
    {
        go(0,n);
        cout << count << endl;
        count = 0;
    }
    return 0;
} 

学长的写法

#include <stdio.h>
int pa(int n)
{
    if(n==1)   //分成一步或两步
    {
        return 1;
    }
    if(n==2)
    {
        return 2;
    }
    return pa(n-1)+pa(n-2);   //n由n-1或n-2得来
}
int main()
{
    int n;
    while(scanf("%d", &n) != EOF)
    {
        printf("%d\n",pa(n));
    }
    return 0;
}
最后修改:2019 年 06 月 25 日
如果觉得我的文章对你有用,请随意赞赏