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

#include <stdio.h> int sum_1_to_n(int n) { { if (n == 1) printf("%d", n); return 1; } int a = 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的和,但存在多个语法和逻辑错误。

- 在`sum_1_to_n`函数中,你多写了一个多余的代码块`{...}`,导致`if`语句和`return 1`被错误地包裹,而真正的递归计算`int a = ...`却放在了代码块外面,并且函数没有正确返回值。
- `main`函数中`scanf`的写法有误,应该是`scanf("%d", &n)`,你漏掉了取地址符`&`,并且缺少分号。

- 检查`sum_1_to_n`函数中递归的基准情况:当`n==1`时,应该返回1,而不是打印并返回1后继续执行后面的代码。
- 注意函数声明和定义中,所有语句都需要以分号结束,包括`scanf`和`printf`。