C while loop1的问题

C while loop1的问题,c,C,我对无限循环有问题 我的预期产出是: Initial value is 9 Next value is 28 Next value is 14 Next value is 7 Next value is 22 Next value is 11 . . . . . . Final value 1, number of steps 19 代码: 你从不初始化计数。然而看起来您可能想检查total是否为偶数,而不是num,num永远不会改变,因此,如果num为奇数,total将永远增加。您还应该分

我对无限循环有问题

我的预期产出是:

Initial value is 9
Next value is 28 
Next value is 14
Next value is 7
Next value is 22
Next value is 11
.
.
.
.
.
.
Final value 1, number of steps 19
代码:


你从不初始化计数。然而看起来您可能想检查total是否为偶数,而不是num,num永远不会改变,因此,如果num为奇数,total将永远增加。您还应该分享您遇到的错误

循环结束的唯一方式是当total==1时,这只有在num==2时才可能。输入任何其他数字,循环将永远不会结束,因为只有num==2将满足条件total!=1结束循环

假设您输入num=9。它将进入第二个条件,总数将变为28。记住num的值仍然是9,total=28。它再次进入循环,因为总计!=1并再次执行相同的操作,即进入第二个条件;因为total=28,num的值仍然相同。因此,无限循环

这样做:

total = num;
同时,检查总数,而不是num:


按总数更新num。这是用于调查错误的代码。关于Collatz猜想还有很多其他的问题,它是一个很好的搜索词,几乎没有误报。原始代码有一个开括号而不是一个闭括号。关于计数未初始化,你是对的。错误是一个无限循环。你现在得到的是评论而不是回答。
total = num;
if (total % 2 == 0) { … } else { … }