这段代码定义了一个递归函数 `print_num`,它接收一个整数,然后按顺序输出这个整数的每一位数字,但最后一位数字后面会多一个空格。 - 递归调用 `print_num(num / 10)` 会先处理高位数字,但注意递归调用后紧接着的 `printf` 会输出当前数字的个位,这导致数字被正确按顺序输出。 - 问题在于递归调用后的 `printf` 中使用了 `"%d "`,即数字后跟一个空格。当递归到最高位时(`num < 10`),直接输出数字而不带空格,但后续的递归返回时,每个非最高位数字后面都会输出一个空格,包括最后一位数字。 - 检查递归的终止条件和输出格式:当 `num < 10` 时直接输出数字,这保证了最高位没有多余空格。但递归返回时,每次都会在数字后加空格,导致最后一位数字后面也出现空格。考虑如何让最后一位数字后面不输出空格。