Problem E: 零起點學演算法34——3n+1問題
阿新 • • 發佈:2018-11-19
#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 的表示式,迴圈將成為無限迴圈。