目录
- 1. 分析
- 2. 代码
- 3. 结果:
1. 分析
现在要写一个小程序,实现输入整型:4268,输出字符:‘4’,‘2’,‘6’,‘8’,思路很简单,就是进行整数的除10,结果对10求模就行,但是得到的值是逆序排列,因此进行从后往前输出可以采用递归的思路,代码如下,但是其中有个问题:就是其中一行代码写多余了,多余的原因是在递归过程中,有一个不变思维,认为传入a/10,a的值没有改变,这个不改变只是针对本层函数,对于第二层的函数而言:a=a/10;
2. 代码
代码如下,其中一行是多余了,注释掉的也可以实现上述内容:
void Dnum(int a)
{
if (a != 0){
Dnum(a / 10);
printf("'%c',", a % 10 + '0');
a = a / 10; // 这句其实没有起作用,知道为什么吗?
//对于倒数第二层函数,a=4,a=a/10=0,并不影响倒数第三层的值,无用代码
}
}