将十进制整数转换为字符串的printd函数看不清楚
将十进制整数转换为字符串的printd函数看不明白
#include <stdio.h>
void printd (int n)
{
if (n < 0){
puchar('-');
n = -n;
}
if(n / 10)
printd(n / 10);
puchar(n % 10 + '0');
}
这个函数看得不是很明白,当然每一语句都没问题,还有递归的调用。问题在于以123的十进制数测试的话,貌似最后能输出的就是第一位 1 ,后面的好像就没有了,请各位帮忙解个惑呗。
------解决方案--------------------
之所以你弄不清楚,你因为你没理解递归
------解决方案--------------------
建议:
1. step into
2. 打印输出运行信息。
供参考。
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
#include <stdio.h>
void printd (int n)
{
if (n < 0){
puchar('-');
n = -n;
}
if(n / 10)
printd(n / 10);
puchar(n % 10 + '0');
}
这个函数看得不是很明白,当然每一语句都没问题,还有递归的调用。问题在于以123的十进制数测试的话,貌似最后能输出的就是第一位 1 ,后面的好像就没有了,请各位帮忙解个惑呗。
------解决方案--------------------
之所以你弄不清楚,你因为你没理解递归
------解决方案--------------------
建议:
1. step into
2. 打印输出运行信息。
供参考。
------解决方案--------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出