运用递归输出逆序数,为什么会这样

img


这是怎么回事啊?

供参考:

#include <stdio.h>
#include <math.h>
void inverse(int n)
{
    if (n > 0) {
        printf("%d", n % 10); 
        inverse(n / 10); 
    }
}
int reverse(int n)
{
    if (n == 0)
        return 0;
    int len = 0;
    int c = n % 10;
    int other = c;
    if (n >= 10)
    {
        int tmp = n;
        while (tmp / 10 > 10)
        {
            tmp /= 10;
            len++;
        }
        other = (int)(c * pow(10, len + 1));
    }
    return other + reverse(n / 10);
}
int main()
{
    int n, m;
    scanf("%d", &n);
    m = reverse(n);
    printf("%d\n", m);
    inverse(n);
    return 0;
}