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

#include <stdio.h> int sum_to_n(int n){ if(n==0){ return 0; } return sum_to_n(n-1)+n; } int main() { printf("%d\n",sum_to_n(3)); return 0; }
这段代码定义了一个递归函数 `sum_to_n`,用于计算从 1 到 n 的整数和,并在 `main` 函数中测试了 n=3 的情况,输出结果为 6。

- 递归函数需要确保每次调用都向基准情况靠近,这里基准情况是 n==0 时返回 0,但你的递归调用 `sum_to_n(n-1)+n` 在 n=1 时会计算 `sum_to_n(0)+1`,这没问题。不过当 n 为负数时,递归会无限进行,导致栈溢出,你可以考虑是否要处理负数输入。
- 你的代码逻辑正确,但可以思考一下:如果 n 很大(比如 100000),递归调用会占用大量栈空间,可能导致程序崩溃。这是递归的一个常见限制,你可以想想如何改进。