我正在運行這個程序(對於Collatz Conjecture),我在第33行得到了分段錯誤,但第33行只是在塊尾部的}
。我不知道這是否是堆棧問題。你能幫我嗎?Collatz猜想程序中的分段錯誤C
int main(int argc, char** argv) {
int x,y,temp;
int maximum_cycle[MAX_NUMERO];
scanf("%d",&x);
scanf("\n%d",&y);
if (x>y){
temp=x;
x=y;
y=temp;
}
hallarNumeroCiclo(x,y,&maximum_cycle[MAX_NUMERO]);
printf("\n%d %d %d\n",x,y,Maximo(x,y,&maximum_cycle[MAX_NUMERO]));
return (EXIT_SUCCESS);
}
hallarNumeroCiclo(int x,int y,int *maximum_cycle[MAX_NUMERO]){
int k,n;
for (n=0;(x < y) ;--y){
for(k=y;k!=1;){
if ((k % 2) ==0)
{
k/=2;
n+=1;
}
else if ((k%2)==1)
{
k = 3*k+1;
n+=1;
}
if (k==1) {
n+=1;
/*this is the line where the error occurs, the next bracket */
}
}
*maximum_cycle[y-x]=n;
}
}
int Maximo(int x, int y,int *maximum_cycle[MAX_NUMERO]){
int i;
int maximo =0;
for(i=0;(i>(y-x));i++){
if (*maximum_cycle[i]>maximo){
maximo=*maximum_cycle[i];
}
}
return maximo;
}
這是33行? – Bathsheba
你的編譯器應該給你這個代碼的一些重要警告,因爲它有一些嚴重的問題 - 我希望你有警告啓用? –
請閱讀此:http://ericlippert.com/2014/03/05/how-to-debug-small-programs/和此:http://stackoverflow.com/questions/how-to-ask –