描述
在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。 请问计算出你可以采用多少种不同的方式爬完这个楼梯。
输入
一个正整数,表示这个楼梯一共有多少阶
输出
一个正整数,表示有多少种不同的方式爬完这个楼梯
输入样例
5
10
输出样例
8
89
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
int f(int a)
{
if(a==1||a==2)
return a;
else
return f(a-1)+f(a-2);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
}
心得:
- 台阶数为n=1或n=2时,种类分别就是1和2
当台阶数n>=3时:
当上到第n阶可以看做第n-1阶上一阶到达或者第n-2阶上两阶到达,假设上n阶的方法有f(n)种,则f(n)=f(n-1)+f(n-2),此时成为了一个递归问题。 - 改进:可以增加对输入n的判断,若为小数或负数,则提示出错。