Онлайн компилятор 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的整数和。代码中存在几个问题。

- 在main函数中,scanf语句后面缺少分号,导致编译错误。
- sum_1_to_n函数内部有一对多余的花括号,虽然不会导致错误,但会使代码结构不清晰。
- 递归函数的基本情况(n==1)处理正确,但缺少对n<=0情况的检查,如果输入0或负数,递归会无限进行下去。

- 检查main函数中scanf语句后面是否缺少分号。
- 考虑如果用户输入0或负数,递归函数会怎样运行,是否需要增加一个条件判断。