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

#include <stdio.h> void print_a_to_b(int a, int b) { if(a==b){ printf("%d", a); return 0; } if (a < b) { printf("%d", a); print_a_to_b(a + 1); }else if (a > b) { printf("%d", a); print_a_to_b(a - 1); } } int main() { int x, y; scanf("%d%d", &x, &y); print_a_to_b(x, y); return 0; }
这段代码试图实现一个递归函数,从a打印到b,但存在几个问题。

- 函数 `print_a_to_b` 的递归调用缺少第二个参数,应该传入 `b`。
- `return 0;` 在 `void` 函数中是不允许的,`void` 函数不能返回值。
- 递归调用后没有处理空格或换行,输出会连在一起。

- 检查递归调用的参数:每次递归时,需要把 `b` 也传进去,否则函数不知道目标值。
- 思考 `void` 函数的正确返回方式:不需要 `return 0;`,直接 `return;` 或者不写 return 语句即可。