Онлайн компилятор C

#include <stdio.h> void print_1_to_n(int n) { if (n<1){ return; } print_1_to_n(n-1); if(n>1){ printf(""); } printf("%d\n",n); }
这段代码定义了一个递归函数 `print_1_to_n`,它的目标是从1打印到n。函数先检查n是否小于1,如果是则直接返回(递归终止条件)。否则,它先递归调用自身打印1到n-1,然后打印当前的n值。代码中有一个多余的 `if(n>1)` 分支,里面只打印了一个空字符串,没有实际作用。

- 递归的逻辑是正确的:先递归处理更小的范围,再打印当前值,这样就能按从小到大的顺序输出。但注意,递归调用 `print_1_to_n(n-1)` 必须在打印当前n之前,否则顺序会颠倒。
- 代码中的 `if(n>1){ printf(""); }` 是多余的,它没有输出任何有效内容,可以删除。另外,函数没有处理n为0的情况,但当前逻辑下n=0会直接返回,不会打印任何数字,这可能是预期的行为。