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

#include <stdio.h> int sum_1_to_n(int n) { { if (n == 1) return 1; } return sum_1_to_n(n - 1) + n; } int main() { int n; scanf("%d".n) printf("%d", sum_1_to_n(n)); return 0; }
这段代码试图用递归计算从1到n的和,但存在语法错误和逻辑问题。

- 在 `scanf` 中,你使用了 `"%d".n`,这是错误的。`scanf` 的第二个参数应该是变量的地址,正确的写法是用逗号分隔,并且变量前加 `&` 符号。
- `sum_1_to_n` 函数内部多了一对多余的花括号,虽然不会导致错误,但会使代码结构不清晰。更关键的是,当 `n` 不为1时,递归调用 `sum_1_to_n(n - 1)` 会一直进行,但缺少对 `n` 为0或负数时的处理,可能导致无限递归。