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

#include <stdio.h> void print_sequence(int n){ int count=1,n_save; n_save=n; if(n==1){ printf("%d",n); return; }for(count<n_save;count++;){ int i=1; if(i<=n){ printf("%d",n); i++; }print_sequence(n-1); } } int main(){ int a,num=0; scanf("%d",&a); print_sequence(a); printf("%d",num); return 0; }
这段代码试图打印一个数字序列,但存在逻辑错误。函数 `print_sequence` 的意图是递归地打印从 n 到 1 的数字,但循环和递归的组合方式不正确。

- 第7行的 `for` 循环语法有误。`for(count<n_save;count++;)` 不是标准的 for 循环写法,正确的结构是 `for(初始化; 条件; 更新)`。这里条件部分写成了 `count<n_save`,但缺少分号分隔,且更新部分 `count++` 后面多了一个分号。这会导致编译错误或未定义行为。

- 递归调用 `print_sequence(n-1)` 放在循环内部,但每次递归都会重新进入循环,导致重复打印和无限递归。实际上,打印递减序列只需要递归调用,不需要外层循环。