http://acm.hdu.edu.cn/showproblem.php?pid=2041
分析:
在第N级阶梯,可能是N-1级一步跨到N级或者N-2级跨两布到N,所以
F(N) = F(N-1)+F(N-2);
注意1<=M<=40
所以超出了int的存储范围,可以用long int
用数组存储代替递归实现
代码如下:
#include <stdio.h> int main() { int n,m,i; long int a[41]; a[0]=1; a[1]=1; a[2]=1; for (i=3; i<41; i++) { a[i]=a[i-1]+a[i-2]; } scanf("%d",&n); while (n--) { scanf("%d",&m); printf("%ld\n",a[m]); } return 0; }