#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int sum(int);
int main() {
printf("%d", sum(3));
return 0;
}
int sum(i) {
int num = 5;
if (num == i)
{
return i;
}
else
{
return i + sum(i++);
}
}
这是程序,我遇到了分段错误 不知道怎么解决
在 C 中这个语句
return i + sum(i++);
有未定义的行为。
相反你需要写
return i + sum( i + 1 );
另一个问题是函数声明
int sum(i) {
不正确。你必须写
int sum(int i) {
这里
return i + sum(i++);
i 只会在 after sum 返回后递增。所以你永远递归并用完堆栈。
你需要
return i + sum(++i);