C 为什么我';我的代码中有无限循环?
我试图计算用户给定的某个范围(exp:start=1和end=5)的Collatz Conzecture的所有循环长度,但我的循环在代码中运行得并不完美 这是我的密码:C 为什么我';我的代码中有无限循环?,c,C,我试图计算用户给定的某个范围(exp:start=1和end=5)的Collatz Conzecture的所有循环长度,但我的循环在代码中运行得并不完美 这是我的密码: #include<stdio.h> int main() { int i,j,count=1; while(1) { scanf("%d %d",&i,&j); count=1; int a=0; for(a=i
#include<stdio.h>
int main()
{
int i,j,count=1;
while(1)
{
scanf("%d %d",&i,&j);
count=1;
int a=0;
for(a=i;a<=j;a++)
{
while(a>1)
{
if(a%2!=0)
{
a=3*a+1;
}
else
{
a=a/2;
}
count++;
}
printf("%d\n",count);
}
}
return 0;
}
#包括
int main()
{
int i,j,计数=1;
而(1)
{
scanf(“%d%d”、&i和&j);
计数=1;
int a=0;
对于(a=i;a1)
{
如果(a%2!=0)
{
a=3*a+1;
}
其他的
{
a=a/2;
}
计数++;
}
printf(“%d\n”,计数);
}
}
返回0;
}
您的代码使用a
作为fora=i中的循环计数器;a1)
),a的值为1。因此,在for
循环中,它永远不会到达j
为不同的目的使用不同的对象。在for
循环中,将不同的对象设置为a
,例如int b=a编码>,并使用b
评估序列
您还需要在每次试验前将计数重置为一。酷。你已经驳斥了这个猜想。当你有而(1)
时,你会期望什么?但是我的循环在我的代码中运行得并不完美。。。。这意味着什么?你不能在循环中改变循环变量,也不能在循环中修改集合。换句话说(cough)使用更具描述性的变量名。