Online Compiler C

#include <stdio.h> void print_1_n(int n) { if (n == 1) { printf("1"); } else { print_1_n(n - 1); printf("%d ", n); } }
这段代码定义了一个递归函数 `print_1_n`,它的功能是打印从 1 到 n 的所有整数,每个数字后面跟一个空格。递归的基本情况是当 n 等于 1 时,直接打印 "1";否则先递归调用自身打印 1 到 n-1,再打印当前的 n。

- 注意递归调用 `print_1_n(n - 1)` 之后,打印 n 时使用了 `printf("%d ", n)`,这会在每个数字后面加上空格,但第一个数字 "1" 后面没有空格,因为基本情况中直接打印了 "1" 而没有加空格。这会导致输出格式不一致,比如 n=3 时会输出 "1 2 3 ",而 n=1 时只输出 "1"。
- 另外,函数没有处理 n 小于 1 的情况。如果传入 n=0 或负数,递归会一直进行下去,最终可能导致栈溢出。