0

現在、C で collat​​z シーケンスのプログラムを作成していますが、最後の値である 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;
}
4

1 に答える 1