Online Compiler C

#include <stdio.h> void print_times(int m, int times) { if (times == 0) { return; } printf("%d ", m); print_times(m, times - 1); } void print_sequence(int n) { int current = 1; if (n <= 0) { return; } if (n >= current) { print_times(current, current); print_sequence(n - current); current++; } else { print_times(current, n); } } int main() { int x; scanf("%d", &x); print_sequence(x); return 0; }
这段代码试图打印一个数字序列,但逻辑上有问题。`print_sequence` 函数中 `current` 每次递归调用时都被重新初始化为1,导致无法正确递增。

- 在 `print_sequence` 函数中,`int current = 1;` 每次递归都会重置 `current` 为1,这样永远无法打印更大的数字。你需要让 `current` 的值在递归过程中保持递增。
- 递归调用 `print_sequence(n - current)` 时,`current` 的值没有正确传递,导致后续递归无法知道当前应该打印哪个数字。考虑如何让 `current` 的值在递归中持续增加。