题目描述
现在小瓜想通过台阶走上平台,最底层(小瓜所在的层)编号为1,最顶层编号为n。由于小瓜的腿比较短,他一次只能向上走1级或者2级台阶。小瓜想知道他有多少种方法走上平台,你能帮帮他吗?
输入格式
一个整数n,其中2≤n≤25。
输出格式
一行一个整数,表示小瓜上台阶的方案数
样例
输入样例
4
输出样例
3
数据范围与提示
对于100%的数据,2≤n≤25;
#include <stdio.h>
int main()
{
int n,a=1,b=1,c;
scanf("%d",&n);
for(int i=2;i<n;i++)
{
c=a;
a=a+b;
b=c;
}
printf("%d",a);
return 0;
}
在这个问题中,由题目可得,我们现在想象自己已经站在第n级台阶上了,那么我们上一个位置只能在第n-1或者n-2级台阶上。比如我们在第3级台阶上,我们上一个位置就在第1或者第2级台阶上。也就是说我们到达第3级台阶有两种情况,分别计算着两种情况并相加即可,即到达第1级台阶的方式数加上到达第2级台阶的方式数,结果等于3。同理到达第n级台阶的放法数就等于到达第n-1级台阶与到达第n-2级台阶数之和,i代表阶梯的层数,a代表在i代表的阶梯数下的方法数,c则代表上一次阶梯数的方法数,b则是一个传递参数,循环从第二级阶梯开始,从此往下的每一次循环,则代表一级阶梯数。