現在、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;
}