【发布时间】:2016-01-14 05:39:11
【问题描述】:
此代码可以运行,但某些编译器会引发分段错误。如果我注释掉sumNumber,则不会发生错误。
int sumNumber(int array[], int k);
int main(void) {
int n;
static int num[MAX];
int k;
scanf("%d", &n);
scanf("%d", &k);
for(int i = 0; i < n; i++){
scanf("%d", &num[i]);
}
quick_sort(num,0,n-1);
printf("%d\n",sumNumber(num,k-1));
return 0;
}
int sumNumber(int array[],int k){
if(k < 0){
return 0;
}
return (array[k] + sumNumber(array,k-1));
}
【问题讨论】:
-
听起来像stack overflow。
-
quick_sort中可能存在错误。滥用指针可能会留下定时炸弹,直到其他代码运行为止。 -
为什么需要对数组进行排序?加法是关联和交换的,所以顺序无关紧要。
-
没有我没有的
quick_sort(),这工作得很好,但我想知道你为什么要传递给quicksort()参数0和n-1。如果数组有 1 个元素,当告诉元素大小为0或没有元素时,quick_sort()是否表现良好?
标签: c recursion segmentation-fault