Online Compiler C

#include <stdio.h> void print_digits_reverse(int n){ if(n==0){ return ; } int digit = n%10; printf("%d",digit); if(n/10!=0){ printf(" "); print_digits_reverse(n/10); } }
这段代码定义了一个递归函数 `print_digits_reverse`,它接收一个整数 `n`,然后按逆序打印出它的每一位数字,数字之间用空格分隔。例如输入 1234,会输出 "4 3 2 1"。递归的基本情况是当 `n` 为 0 时直接返回,否则先打印最后一位数字,再递归处理去掉最后一位后的数字。

- 注意当输入为 0 时,函数直接返回,不会打印任何内容。这可能导致用户期望输入 0 时输出 "0",但实际没有输出。考虑是否需要在递归前单独处理 n 为 0 的情况。
- 递归调用前判断 `n/10 != 0` 是为了避免在最后一位数字后多打印一个空格,但这也导致当输入为个位数时,递归不会执行,打印后直接结束。这个逻辑是正确的,但可以思考是否有更简洁的方式控制空格输出。