用自己的思路写的写了一阵子有点复杂,学长的简单多了。
爬楼梯
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;
}