在线编译器 C

#include <stdio.h> void print_1_to_n(int n) { if (n == 1) { printf("1"); } else { print_1_to_n(n - 1); printf(" %d", n); } }
这段代码定义了一个递归函数 `print_1_to_n`,它的功能是打印从 1 到 n 的所有整数,每个数字之间用空格分隔。递归的思路是:先打印 1 到 n-1,再打印 n,当 n 等于 1 时直接打印 "1" 作为终止条件。

- 注意递归调用 `print_1_to_n(n - 1)` 的位置在打印当前数字之前,这保证了数字按从小到大的顺序输出。如果交换这两行顺序,输出会变成从大到小。
- 函数没有处理 n 小于 1 的情况。如果传入 0 或负数,递归会无限进行下去,因为永远不会满足 `n == 1` 这个条件。考虑是否需要增加对非法输入的检查或处理。