C语言中的Collatz猜想测试有问题
我试图创建一个代码,将数字2到100,并测试每个科拉兹猜想。 目标是,对于每个数字,如果是偶数,则将其除以2,如果是奇数,则将其乘以3并加1。 它打印每个步骤,如果达到1,则每个数字应停止测试。为什么不起作用C语言中的Collatz猜想测试有问题,c,while-loop,collatz,C,While Loop,Collatz,我试图创建一个代码,将数字2到100,并测试每个科拉兹猜想。 目标是,对于每个数字,如果是偶数,则将其除以2,如果是奇数,则将其乘以3并加1。 它打印每个步骤,如果达到1,则每个数字应停止测试。为什么不起作用 #include <stdio.h> int main() { int number, position; position == 2; number == 2; while (position <= 100) {
#include <stdio.h>
int main()
{
int number, position;
position == 2;
number == 2;
while (position <= 100)
{
while (number != 1)
{
if (number % 2 == 0)
{
number = number/2;
printf("%d\n", number);
}
else if (number % 2 != 0)
{
number = number*3;
number = number + 1;
printf("%d\n", number);
}
}
position = position + 1;
number = position;
}
}
#包括
int main()
{
整数、位置;
位置==2;
数字==2;
而(位置修复=
与=
的对比:
position = 2;
number = 2;
另外,如果不需要else,则else是不必要的。偶数的反义词是奇数,因此一个普通的else
就足够了:-)您已经用一个双等==
(比较运算符)设置了位置和编号,而不是使用单个等=
(赋值运算符)因此,算法是比较它们,而不是赋值。
作业应如下所示:
position = 2;
number = 2;
您还可以在首次定义它们时执行此操作:
int number=2, position=2;
除了代码是正确的之外,唯一需要强调的是,如果
,您不需要使用else,因为它可以是偶数或奇数,所以一个else
就足够了
希望我能帮上忙:-)可能是因为使用了==
而不是=
?它执行相同的循环0。我建议打开编译器警告:clang-7-pthread-lm-o main.c main.c:6:14:警告:相等比较结果未使用[-Wunused comparison]position==2;
。投票以印刷错误结束。我正在使用Dev-C++并理解你刚才所说的内容的0%。我的编译器选项检查所有内容。这两条语句:position==2;
和number==2;
没有效果。也许你的意思是:position=2;
和number=2;