阿摩線上測驗 登入

申論題資訊

試卷:103年 - 103年專門職業及技術人員高等建築師、技師、第二次食品技師暨普通不動產經紀人、記帳士考高等_資訊技師#29113
科目:程式設計
年份:103年
排序:0

題組內容

一、考拉茲猜測(Collatz conjecture):假設我們輸入一個正整數 n,並利用以下演算法
來計算新的 n 值:

當不斷使用此演算法,所有的正整數終將會達到 1。例如:n = 11 時,其所計算的數
列如下:
11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1

申論題內容

⑵試寫出一非遞迴函式 collatz_i(int n)(意即使用疊代方式),當輸入參數為正整數 n
時,計算並列出所有計算的數列。(10 分)
void collatz_i(int n) // 假設 n > 0
{
……
}

詳解 (共 2 筆)

詳解 提供者:這似乎就是阿摩線上測驗的暱稱最多的字數了

void collatz_i(int n){

    while(n!=1){

        printf("%d, ",n);

        if(n%2==0) n/=2;

        else n=3*n+1;

    }

    printf("%d",1);

}

詳解 提供者:我要成功
void collatz(int n){
 while(1){
         if(n==1){
              printf("%d ",n);  
              return  ;
         }
         if(n%2==1){
              n=n*3+1;
              printf("%d ",n);
          }
         if(n%2==0){
              n=n/2;
              printf("%d ",n);
          }
        }
}