一道简单的c语言,它是如何实现递归调用的?

2024-11-05 02:22:05
推荐回答(3个)
回答1:

#include
void f(int x);
void main()
{
int a;
scanf("%d",&a);
f(a);
}
void f(int x)
{
int i;
if((i=x/10)!=0)//如果输入是48,此处i值为48/10==4
f(i);//f(4)再次调用f()函数,输出4
putchar(x%10+'0');//返回第一次调用x%10就是8
putchar(' ');
}
不好意引用一下php_baika的程序
我也是初学者,以下是我的见解
c语言的程序是一条一条执行的,只要理解这一点不难分析出
当第一次执行到f(i); 时x=48,i=4,以下的语句暂时不执行 进入递归调用void f(int x) 这时执行到f(i);时x=4,i=0 不满足if条件所以 输出putchar 。
因为已经到尽头了,返回上一次x=48,i=4语句继续往下执行putchar里得x=48

回答2:

递归调用,然后一层层返回

#include
void f(int x);
void main()
{  
 int a;
 scanf("%d",&a);
 f(a);
}
void f(int x)
{
 int i;
 if((i=x/10)!=0)//如果输入是48,此处i值为48/10==4
 f(i);//f(4)再次调用f()函数,输出4
 putchar(x%10+'0');//返回第一次调用x%10就是8
 putchar(' ');
}

回答3:

#include
void main()
{void f(int x);
int a;
scanf("%d",&a);
f(a);
}
void f(int x)
{
int i;
if((i=x/10)!=0)
f(i);
putchar(x%10+'0');//实际上就是以字符0为基准上相加啊,函数一直递归到被递归值求商为0为止。
putchar(' ');
}