注册 登录
编程论坛 C语言论坛

有大佬解释一下这个函数自己调用自己的过程以及putchar为什么输出的是最高位

新手714 发布于 2020-04-27 19:48, 1764 次点击
#include<stdio.h>
void convert(int n)
{
    int i,j;
    if ((i = n / 10)!= 0)
        convert(i);//就是这个递归的//
    putchar(n%10+'0');
}
int main()
{
    int number;
    printf("\nInput an integer:");
    scanf("%d", &number);
    printf("Output:");
    if (number < 0)
    {
        putchar('-');
        number = -number;
    }
    convert(number);
}
6 回复
#2
forever742020-04-27 22:42
你准备交卷
  你发现还有道题还没答
    你发现笔没水儿了
    你换笔或者灌水儿
  你答那道题
你交卷

你先调用了交卷函数,可是最后才交卷。
#3
forever742020-04-27 22:43
你换笔那里就是在输出最高位嘛
#4
新手7142020-04-27 23:22
回复 2楼 forever74
为什么输出最高位以后还能输出上一位一直到个位
#5
fulltimelink2020-04-28 02:04
回复 4楼 新手714
不管是不是递归,if后面的代码都得执行不是
#6
forever742020-04-28 12:22
你没考试经验啊?
换完笔不得回来答题啊?
答完题不得回来交卷啊?

这和输出最高位后
回来输出次高位
回来输出三高
回来输出四高

有啥区别?
你看到一个递归函数,就得在脑子里像上面一样,把它想象成多个函数,一个调用另一个,另一个调用另另一个,调用完回来接着走。
#7
新手7142020-04-29 09:56
回复 6楼 forever74
别整这些花里胡哨的,俺不懂,难道是putchar函数还能发现之前条件句计算的值它还没计算,然后把它还没计算的抓过来计算输出?
1