gpt4 book ai didi

c - C中访问段错误的原因是什么

转载 作者:太空宇宙 更新时间:2023-11-04 00:14:20 25 4
gpt4 key购买 nike

我想知道是什么导致了以下程序中的段错误。我认为段错误发生在递归期间。一旦我输入一个数字,就会出现错误消息“发生访问段错误”。

代码如下:

 #include <stdio.h>
#include "simpio.h"

int sum(int n);

main()
{
int n, Sum;

printf("Please enter the amount of elements in sequence n/n+1: ");
printf("LOL1\n");
n=GetInteger();
Sum=sum(n);
printf("LOL2\n");
printf("The sum of the first %d elements of the sequence n/n+1 is: %d", n, Sum);
printf("LOL3\n");
getchar();
}

int sum(int n)
{
if(n=0) return(0);
else return((sum(n-1))+(n/(n+1)));
}

最佳答案

这个函数:

int sum(int n)
{
return (n = 0) ? 0 : (sum(n - 1)) + (n / (n + 1));
}

是一个无限循环,每次迭代都会占用堆栈空间,直到耗尽内存。你的意思是 (n == 0) 在这里。修复该问题后,您会发现对于整数,(n/(n + 1)) 始终为 0,因此该函数可以运行但始终返回 0。

您在这里根本不需要递归,但您确实需要使用除整数以外的其他东西来使该除法有意义。

关于c - C中访问段错误的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com