关于#c语言#的问题,请各位专家解答!

初学者看不懂这个递归过程是怎么运行的,大家可以帮我解答一下吗

img

这递归的东西不好讲啊。fun(-234)会检查是否是负数,是负数则先输出负号,然后转为正数。
判断参数是否大于10(就是if(m/10),当m大于10的时候成立,会递归调用fun(m/10),直到递归到m是个位数为止。这时候不递归了,输出m的字符,就是m值加上字符'0'。你可以理解一下,m不断除以10,最后剩下的m就是2,那么最里层的递归会输出字符'2',然后函数返回上一层,会输出'3',最后会输出'4',因此最终输出的是字符串"-234"

先判断m是不是负数,如果是,则输出符号,并把m转换成正数。
然后开始递归m/10,后面递归返回后输出m的各位。

函数看上去是把数字每一位转成字符输出。

“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出