Online Compiler C

#include <stdio.h> void print_num(int num) { if (n == 0) { return; } print_num(num / 10); printf("%d ", num % 10); } int main() { print_num(52); return 0; }
这段代码试图递归地打印一个整数的每一位数字,但存在一个错误。

代码中定义了一个函数 `print_num`,它接受一个整数参数 `num`。函数内部首先检查 `n == 0`,但这里 `n` 没有被定义,应该是 `num`。如果条件成立则返回,否则递归调用自身并传入 `num / 10`,然后打印 `num % 10`。在 `main` 中调用 `print_num(52)`。

- 第5行使用了未定义的变量 `n`,应该改为 `num`。这是导致编译错误的原因。
- 递归逻辑本身是合理的:先递归处理高位数字,再打印当前最低位,这样数字会按原顺序输出。但需要确保递归终止条件正确。