C语言的一道函数递归问题 急!

来源:百度知道 编辑:UC知道 时间:2024/05/27 17:37:42
Description

haozi很淘气,最近FJ带了很多好吃的,haozi乘FJ不在的时候就吃了很多好吃的,FJ回来发现了,决定一定要抓住haozi。

但是haozi很聪明,假设原来他在16号楼,那么下一分钟必定是在15号楼或者17号楼.
如果他一开始在1号楼,那么下一分钟只能在2号楼,
如果他一开始在n号楼,那么下一分钟一定在n-1号楼。

现在给定一共有n号楼,一开始haozi在p号楼,求过了m分钟,haozi在t号楼的一共有多少种行走方案数

Input

cas代表测试数据数。(0<cas<=100)
n,p,m,t代表如题意。(0<n,p,m,t<100)

Output

每组测试数据一行,每行一个整数,表示总共的方法数
Sample Input

2
3 2 4 2
3 2 3 2

Sample Output

4
0

output detail:

第一组测试中有以下四种走法:
2->1->2->1->2
2->1->2->3->2
2->3->2->1->2
2->3->2->3->2

#include <stdio.h>
int count=0,t,n;
/*n最高楼层,count行走方案数,t最后所在楼层,minute总时间,q起始所在楼层*/
int main(void)
{
int cas(int p,int m);
extern count,t,n;
int minute,q;
printf("最高楼层,最后所在楼层,总时间,起始所在楼层:\n");
scanf("%d,%d,%d,%d",&n,&t,&minute,&q);
cas(q,minute);
printf("%d\n",count);
return 0;
}

int cas(int p,int m)
{
if(m<=0)
{
if(p==t) {count++; return 0;}
else if(p!=t) return 0;
}
if(p==1) cas(2,m-1);
else
{
if(p==n) cas(p-1,m-1);
else
{
cas(p+1,m-1);
cas(p-1,m-1);
}
}
}
可在VC下直接运行,记得要给偶分!!!