求简单C语言程序答案

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:30:47
众所周知,兔子喜欢胡萝卜,一天乌云密布,他被告知将会有一场会给森林带来毁灭的大洪灾来临,他很害怕,并没有多想,他告诉

自己要逃走。他突然想起一个山顶上有一座庙宇,可以在那儿避难直到洪水过去。但是不幸的是在山顶上没有食物,所以他得自个携

带胡萝卜。他走到山脚停下,那儿只有一个方法达到山顶,就是通过一个长长的梯子。给出梯子的阶梯数,他问自己:“有多少种不

同的走法呢?”。当然由于他的身高限制,他一次踏过的阶梯数是有限制的。他很聪明所以他很快得出了答案。你知道他如何办到的

么?
输入说明:
输入包含一些测试用例,每一行包含 M(1 <=M <=40) and N(1 <=N <=10), M指定了梯子数,N指定了兔子一次能踏过的最大阶梯数。
输出说明:
每个测试用例输出结果占用一行,你的程序必须输出答案(一个整数)。

比如输入
4 2
5 4
输出
5
15

#include <stdio.h>

int cal(int s[],int step,int stop,int max)
{
int i;
if(step>stop) return s[stop];
s[step] = 0;
for(i=step-1;i>=0&&step-i<=max;i--)
{
s[step]+=s[i];
}
return cal(s,step+1,stop,max);
}

void main()
{
int step[40];
step[0] = 1;
while(true)
{
int M,N;
scanf("%d%d",&M,&N);

printf("%d\n",cal(step,1,M,N));
}
}