递归调用..在线等..谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/29 15:51:54
void f(int n)
{
char c;
int a;
if((a=n/10)!=0)
f(a);
c=n%10+48;
printf("%c",c);
}

关于这个递归调用..比如我最早输入n=45,然后a=45/10=4!=0,于是我执行f(4),此时n=4,a=4/10==0.于是c=4%10+48=...
printf之后呢....怎么回去调用....
不好意思..不是倒着输出..就是输入一个整数45然后让这个整数以字符串的形式输出..就是比如输入整数45然后按字符格式输出45

执行到f(4)时,就进入下一层调用了,可以知道,在下一层中,n==4,a=n/10==0。
printf之后返回到上一层调用位置的下一条语句。
c=n%10+48;
printf("%c",c);
这里n=45.

printf之后程序就结束了,而之前当(a=n/10)!=0时程序循环执行f(int n).

对了,你到底想实现什么?

是要把C返回到main函数中吗?那后面要加return(c);
把C的值返回到main中

递归就是一个栈
递归函数像一个死胡同。(如果不是死胡同就无限递归了。不过在真实系统中会造成栈溢出而gameover)
函数调用就像一个人走在胡同中。碰到尽到才回来。
写在递归函数之前就如进胡同时作的事。
而写在递归函数之扣就是退出胡同时作的事。

void f(int n)
{
char c;
int a;
if((a=n/10)!=0)
f(a);
c=n%10+48;
printf("%c",c);
n = c;
f(n);
}

不知道你是不是这个意思.