题目:1091
题目描述
Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几种走法。
输入
输入包括多组数据。 每组数据包括一行:N(1≤N≤40)。 输入以0结束
输出
对应每个输入包括一个输出。 为redraiment到达第n阶不同走法的数量。
样例输入
1
3
0
样例输出
1
3
这是一道规律题,多写几项可发现,n=1时,1种;n=2时,2种;n=3时,3种,分别为"1,2"和"2,1"、“1,1,1”;n=4时,5种,分别为"1,1,1,1"和"1,1,2"、“1,2,1”、“2,1,1”、“2,2”……则有每项为前两项的和
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a,b,c;
while(scanf("%d",&n),n!=0)//n等于0时表示输入结束
{
a=1;b=2;
if(n==1)
printf("1\n");
else if(n==2)//前两项为特殊情况,特殊考虑
printf("2\n");
else
{
for(i=3; i<=n; i++)//从第三项开始,每项为前两项的和
{
c=a+b;//前两项的和
a=b;//重新更改a和b的值
b=c;
}
printf("%d\n",c);
}
}
return 0;
}```