【发布时间】:2013-07-19 15:33:22
【问题描述】:
我想知道是什么导致了以下程序中的分段错误。我认为分段错误发生在递归期间。一旦我输入一个数字,就会出现“发生访问分段错误”的错误消息。
代码如下:
#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)));
}
【问题讨论】:
-
请出示您的
GetInteger。 -
另外,您的 sum(int n) 函数中有一个错误。你应该有 if(n == 0)
-
n=0-->n==0 -
请注意,
n/(n+1)在使用整数运算时始终为 0,因此您的函数将始终返回 0。 -
3/4 = 0 使用整数 - 也许你应该使用浮点数?
标签: c recursion segmentation-fault