有人知道我的 c 程序有什么问题吗? [重复]

问题描述 投票:0回答:2
#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 recursion segmentation-fault function-call post-increment
2个回答
1
投票

在 C 中这个语句

return i + sum(i++);

有未定义的行为。

相反你需要写

 return i + sum( i + 1 );

另一个问题是函数声明

int sum(i) {

不正确。你必须写

int sum(int i) {

-2
投票

这里

return i + sum(i++);

i 只会在 after sum 返回后递增。所以你永远递归并用完堆栈。

你需要

return i + sum(++i);
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.