我目前正在为C上的collatz序列编写一个程序,但是最后一个值1没有打印出来。例如,当我输入8时,结果必须是8 4 2 1,但它只打印8 4 2,或者当我输入5时,它只打印5 16 8 4 2。我应该在while ( )中放入什么内容来打印完整的答案?谢谢你!!
void
CollatzSequence(int n)
{
int x = 1;
do {
x++;
printf("%3d", n);
if (n%2==0)
n /= 2;
else
n = 3 * n + 1;
}
while ( );
printf("\n");
}
int
main()
{
int n;
do {
printf("Input an integer greater than 0: ");
scanf("%d", &n);
if (n <= 0)
printf("Invalid input. Try again.\n");
} while (n <= 0);
CollatzSequence(n);
return 0;
}发布于 2019-11-17 01:15:29
代码需要新的循环退出条件。
一旦打印了1,循环就完成了。
示例如下。
void CollatzSequence(int n) {
for (;;) {
printf("%3d", n);
if (n == 1)
break;
if (n % 2 == 0)
n /= 2;
else
n = 3 * n + 1;
}
printf("\n");
}https://stackoverflow.com/questions/58893022
复制相似问题