C语言中带递归函数的分段故障11
我一直收到以下代码的分段错误11。我相信它与递归有关,但我不完全确定如何实现。该方法应该接受一个数组,跳过奇数值,并不断重复,直到它有一个只剩下值的数组并返回该值 谢谢C语言中带递归函数的分段故障11,c,recursion,C,Recursion,我一直收到以下代码的分段错误11。我相信它与递归有关,但我不完全确定如何实现。该方法应该接受一个数组,跳过奇数值,并不断重复,直到它有一个只剩下值的数组并返回该值 谢谢 #include <stdio.h> int callTable(int table[], int size) { int i = 0; int j = 0; int cHeight = size / 2; int cTable[cHeight]; while (i < size)
#include <stdio.h>
int callTable(int table[], int size)
{
int i = 0;
int j = 0;
int cHeight = size / 2;
int cTable[cHeight];
while (i < size)
{
if (table[i] % 2 == 0)
{
cTable[j] = table[i];
j++;
}
i++;
}
if (size > 1)
return callTable(cTable, cHeight);
else
return cTable[0];
}
int main()
{
int tPass[100];
int i, answer;
for (i = 0; i < 100; i++)
tPass[i] = i + 1;
answer = callTable(tPass, sizeof(tPass) / sizeof(tPass[0]));
printf("%d\n", answer);
}
#包括
int callTable(int table[],int size)
{
int i=0;
int j=0;
int cHeight=尺寸/2;
int-cTable[cHeight];
而(i1)
返回调用表(cTable、cHeight);
其他的
返回cTable[0];
}
int main()
{
int-tPass[100];
int i,答案;
对于(i=0;i<100;i++)
tPass[i]=i+1;
应答=可调用(tPass,sizeof(tPass)/sizeof(tPass[0]);
printf(“%d\n”,答案);
}
要跳过奇数值还是奇数索引?您当前正在跳过奇数值,因此在调用callTable一次后,只剩下偶数值。然后,在第二个调用中,尝试使用大小为一半的数组来存储偶数值(它们都是偶数),因此尝试将整个数组存储在大小为一半的另一个数组上
如果要跳过奇数索引,请更改此行:
if (table[i]%2==0)
对于这一个:
if (i%2==0)
它运行正常并返回1(即索引为0的数字)。当您尝试在调试器中运行它时,您学到了什么?