Online Compiler C

#include <stdio.h> void print_num(int num) { if (num == 0) { printf("0 "); return; } if (num < 0) { printf("%d ", num); return; } print_num(num / 10); printf("%d ", num % 10); } int main() { printf("Hello, World!\n"); return 0; }
这段代码定义了一个递归函数 `print_num`,它试图将一个整数按位逐个打印出来。主函数只是打印了 "Hello, World!" 并结束,并没有调用 `print_num`。

- 函数对负数直接打印整个数字,没有递归分解,这会导致负数无法按位打印。
- 递归处理正数时,先递归调用 `print_num(num / 10)` 再打印最后一位,但递归终止条件只处理了 `num == 0`,没有处理 `num` 是一位数的情况,比如 `num` 是 1 到 9 时,会先递归调用 `print_num(0)` 打印 "0 ",然后再打印该数字本身,导致多打印一个 0。