1. 程式人生 > >【OpenJudge】c語言_角谷猜想

【OpenJudge】c語言_角谷猜想

    /*
    描述
    所謂角谷猜想,是指對於任意一個正整數,如果是奇數,則乘3加1,如果是偶數,則除以2,得到的結果再按照上述規則重複處理,
    最終總能夠得到1。如,假定初始整數為5,計算過程分別為16、8、4、2、1。
    程式要求輸入一個整數,將經過處理得到1的過程輸出來。
    輸入
    一個正整數
    輸出
    從輸入整數到1的步驟,每一步為一行,每一部中描述計算過程,假定輸入為7,則輸出為:
    7*3+1=22
    22/2=11
    11*3+1=34
    34/2=17
    17*3+1=52
    52/2=26
    26/2=13
    13*3+1=40
    40/2=20
    20/2=10
    10/2=5
    5*3+1=16
    16/2=8
    8/2=4
    4/2=2
    2/2=1
    最後一行輸出"End",如果輸入為1,直接輸出"End"

    */
    #include<stdio.h>
    void f(int x);
    int main()
    {
        int x = 0;
        scanf("%d",&x);
        f(x);
        return 0;
    }
    void f(int x)
    {
        int result = 0;
        if(x==1)
            printf("End");
        else
        {
            if(x%2==0&&x>1)//偶  增加了x》1的條件  把x/2改成了x%2
            {
                result = x/2;
                printf("%d/2=%d\n",x,result);
            }
            else if(x%2!=0&&x>1)//增加了條件  而不是單純的 else
            {
                result = x*3+1;
                printf("%d*3+1=%d\n",x,result);
            }
            f(result);
        }
    }