c语言中,任何用递归编写的函数都可以用循环代替,那任何用循环编写的函数可以用递归代替吗?
2个回答
展开全部
不行:用循环编写的函数可以用递归代替是因为循环体内的数之间有一定的规律,如:
求n!用递归为
long fac(int n)
{ if(n==0)
return 1;
else
return n*fac(n-1);
}
在循环中每个相邻的数之间都必须有一定内部规律,即数与数之间相差一,如:
int i,s=1;
for(i=1;i<=n;n++)
{
s*=i;
}
但是举个最简单的例子:
定义一个一维数组输入50个学生的考试成绩,统计不及格的人数;
用循环为:
int i,j,a[50];
for(i=o;i<50;i++)
{
scanf("%d",&a[i]);
}
for(j=0,j<50;j++)
{
if(a[j]<60)
k++:
}
printf("%d",k);
但是用递归无法实现,那是因为这些数与数之间没有让任何内在联系。
求n!用递归为
long fac(int n)
{ if(n==0)
return 1;
else
return n*fac(n-1);
}
在循环中每个相邻的数之间都必须有一定内部规律,即数与数之间相差一,如:
int i,s=1;
for(i=1;i<=n;n++)
{
s*=i;
}
但是举个最简单的例子:
定义一个一维数组输入50个学生的考试成绩,统计不及格的人数;
用循环为:
int i,j,a[50];
for(i=o;i<50;i++)
{
scanf("%d",&a[i]);
}
for(j=0,j<50;j++)
{
if(a[j]<60)
k++:
}
printf("%d",k);
但是用递归无法实现,那是因为这些数与数之间没有让任何内在联系。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询