在线编译器 C

#include <stdio.h> void print_digits_reverse(int n) { if (n == 0) { printf("%d", n); return; } printf("%d ", n % 10); print_digits_reverse(n / 10); } int main() { print_digits_reverse(25); return 0; }
这段代码定义了一个递归函数 `print_digits_reverse`,它的目标是将一个整数的各位数字从低位到高位依次打印出来。当前代码对输入 25 会输出 "5 2",但存在一个边界情况处理问题。

- 当输入为 0 时,函数会直接打印 "0" 并返回,这导致递归过程中如果某次调用传入 0(例如处理完所有高位后),会额外打印一个 "0",而不是只打印原始数字的各位。
- 递归的终止条件需要仔细考虑:对于正整数,当 n 为个位数时(即 n < 10),应该只打印该数字并结束,而不需要再对 0 进行特殊处理。