#include<stdioh>
#define n 50//最高楼层 ,自己可能修改
void digui(int minute,int floor,int reach);
int count=0;//记录方案
main()
{
int minute=0;//时间
int floor=0;//初始时所在楼层
int reach=0;//到达时要所在楼层
printf("\n请输入时间(分钟):");
scanf("%d",&minute);
printf("\n请输入haozi所在楼层:(1~50)");
scanf("%d",&floor);
printf("\n请输入到达所在楼层:");
scanf("%d",&reach);
digui(minute,floor,reach);
printf("方案数:%d\n",count);//输出
getch();
}
void digui(int minute,int floor,int reach)//minute传递时间,floor传递所在层
{
if(minute!=0)//当时间不为0时
{
if(floor==n)//当在最高层时
{ digui(minute-1,floor-1,reach);}//时间减一分钟,只能向下走
else if(floor==1)//当在最低层时
{ digui(minute-1,floor+1,reach);}//时间减一分钟,只能向上走
else //当不在最高层和最低层时
{
digui(minute-1,floor-1,reach);//时间减一分钟,可能向下走
digui(minute-1,floor+1,reach);//时间减一分钟,可能向上走
}
}
if(minute==0&&floor==reach)//当时间为0时,且同时在reach层时,方案数加1
{count++;}//count记录方案数
}
1、在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。 在编程语言中,把直接或间接地调用自身的函数称为递归函数。函数的构建通常需要一个函数或者一个过程来完成。
2、递归函数 是建立在嵌套的基础上的,只不过嵌套调用了自己本身,而且经常不是显式调用。一个含直接或间接调用本函数语句的函数被称之为递归函数,它必须满足以下两个条件:
1) 在每一次调用自己时,必须是(在某种意义上)更接近于解;
2) 必须有一个终止处理或计算的准则。
例如一个非法的递归(嵌套)调用:
void ff(){
ff();
}
int main()
{
ff();
system("pause");
return 0;
}
#include<stdioh>
int find(int a[],int n)
{
if(n==0)
return a[0];
else
return find(a,n-1)>a[n]find(a,n-1):a[n];
}
int main()
{
int a[5],i;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("%d",find(a,4));
return 0;
}
函数中 自己调用自己 就是 递归调用。例如阶乘计算,func调用func自己。
long func(int n) {long result;
if (n==0) result=1;
else
result = n func(n-1); //递归调用
return result;
}
以上就是关于C语言程序请教递归思路~~~在线等全部的内容,包括:C语言程序请教递归思路~~~在线等、用C++语言编写程序,递归函数、编一个程序,读入具有五个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它的位置。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)