Online Compiler C

#include <stdio.h> void print_sequence(int n) { if(n==1){ printf("1"); return; }print_sequence(n-1); printf("%d ",n); } int main() { int x; scanf("%d",&x); print_sequence(x); return 0; }
这段代码定义了一个递归函数 `print_sequence`,它接收一个整数 `n`,当 `n` 等于 1 时打印 "1" 并返回,否则先递归调用 `print_sequence(n-1)`,再打印当前的 `n` 值。`main` 函数从输入读取一个整数 `x`,然后调用 `print_sequence(x)` 输出序列。

- 注意递归调用的顺序:先递归处理 `n-1`,再打印 `n`,这会导致数字按递增顺序输出(例如输入 3 会输出 "1 2 3")。但你的代码在打印 `n` 时使用了 `printf("%d ",n);`,而递归基例中使用了 `printf("1");` 没有空格,这会导致第一个数字后缺少空格,输出格式可能不统一。
- 另外,递归函数没有处理 `n` 小于 1 的情况。如果输入 0 或负数,函数会无限递归直到栈溢出。考虑是否需要增加对非法输入的检查或处理。