- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行这个程序(对于 Collatz Conjecture ),并且在第 33 行出现段错误,但第 33 行只是一个 }
。在一个 block 的末尾。不知道是不是栈的问题。你能帮忙吗?
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;
}
最佳答案
您正在将 &maximum_cycle[MAX_NUMERO]
传递给 hallarNumeroCirclo
和 Maximo
,这是一个单个整数指针!这是由于数组索引选择了一个,然后您获取了该地址。
但是,函数所需的类型是数组,当你尝试写入时,它会写入到未知/未映射的区域,因此对您的程序进行 SIGSEGV。
你的问题实际上是,当你向它传递一个指针时,除了指向指针的指针之外的函数。请注意,为指针数组分配的空间可能小于实际的整数数组。在 x86 上它们是相同的,但在这里你的问题是你的代码向你的指针写入了虚假的东西,并且取消引用下一个指针会让你崩溃。
尝试在源中使用 &maximum_cycle
而不是 &maximum_cycle[MAX_NUMERO]
。
关于c - C 语言 Collatz 猜想程序中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22692225/
有没有一种方法可以在不使用 while 语句的情况下使用列表推导式来验证 Collatz 猜想,或者不使用其他方法将 n 值附加到 ls 而无需在每个语句后添加 ls? from random i
我在循环和声明变量方面遇到了问题。目前我正在制作一个关于 Collatz 猜想的程序,该程序应该检查从一定数量的 Collatz 序列中达到一个的最大步骤是什么。这是我的代码: start_n
我在生成 Terras 数字序列时遇到问题。 这是我失败的尝试: using System; using System.Collections.Generic; using System.Linq;
我正在编写一个递归方法来计算正整数序列的 collatz 猜想。但是,我需要在值小于或等于原始值时停止计算,而不是在值达到 1 时停止计算。我不知道应该在 if 语句中添加什么条件。 int co
我仍在主要为自己(和我的学生)教授一些 R。 这是 Collatz 序列在 R 中的实现: f = 1 def __colla(n): while n > 1:
我是 Mathematica 的新手,正在尝试理解模式和规则。所以我尝试了以下方法: A = {1, 2, 3, 4} 一种//。 {x_?EvenQ -> x/2, x_?OddQ -> 3 x +
我想和一些老东西一起玩 Collatz conjecture并决定以(非常)函数式的风格来做它会很有趣,所以我实现了一个 unfoldr 函数,接近 Haskell has 函数。 : fn unfo
我是一名优秀的程序员,十分优秀!