题目描述
Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。
但年幼的他一次只能走上一阶或者一下子蹦上两阶。
现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几种走法。
输入
输入包括多组数据。
每组数据包括一行:N(1≤N≤40)。
输入以0结束
输出
对应每个输入包括一个输出。
为redraiment到达第n阶不同走法的数量。
样例输入 Copy
1 3 0
样例输出 Copy
1 3
代码部分:
#include <stdio.h>
#include <stdlib.h>
int main()
{
//将简单计算可知,此题为斐波那契数列类型题
int n;
scanf ("%d",&n);
int a=1;
int b=2;
int c;
while(n!=0)
{
if(n==1)//当为一阶楼梯时,只有一种上发
{
printf ("1\n");
}
else if(n==2)//当有二阶楼梯时,有两种上法
{
printf ("2\n");
}
else
{
for(int i=3;i<=n;i++)//当有三阶及以上楼梯时,利用斐波那契数列计算
{
c=a+b;
a=b;
b=c;
}
printf ("%d\n",c);
a=1;//初始化a,b的值,防止影响下次计算
b=2;
}
scanf("%d",&n);
}
return 0;
}