1. 程式人生 > >Problem E: 零起點學演算法34——3n+1問題

Problem E: 零起點學演算法34——3n+1問題

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    n<=pow(10,9);
    int count=0;
    scanf("%d",&n);
    while(n!=1)
    {
        count++;
        if(n%2==0)
        n=n/2;
        else
        n=n*3+1;
    }
    printf("%d\n",count);
    return 0;
}

HINT

 

使用 while 迴圈使用 while 語句在條件成立時重複某動作,類似於 if 語句,只要條件為 true 就重複動作。 while 迴圈計算一個表示式的值,如果表示式為 true,則會執行迴圈體中的程式碼。如果條件計算結果為 true,在迴圈返回以再次計算條件前執行一條語句或一系列語句。條件計算結果為 false 後,則跳過語句或一系列語句並結束迴圈。在不確定要將一個程式碼塊迴圈多少次時,使用 while 迴圈可能會非常有用。 例如,下面的程式碼將數字顯示到"輸出"面板中: var i:Number = 0; while (i < 5) { trace(i); i++; } 您會看到以下數字顯示到"輸出"面板中: 0 1 2 3 4 使用 while 迴圈而非 for 迴圈的一個缺點是,在 while 迴圈中更有可能編寫出無限迴圈。如果遺漏遞增計數器變數的表示式,則 for 迴圈示例程式碼將無法編譯;而 while 迴圈示例程式碼將能夠編譯。若沒有遞增 i 的表示式,迴圈將成為無限迴圈。