阿摩線上測驗 登入

申論題資訊

試卷: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_r(int n),當輸入參數為正整數 n 時,計算並列出所有計
算的數列。(10 分)
void collatz_r(int n) // 假設 n > 0
{
……
}

詳解 (共 2 筆)

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

void collatz_r(int n){

    if(n>1){

        printf("%d, ",n);

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

        else n=3*n+1;

        collatz_r(n);

    }

    else printf("%d",1);

}

詳解 提供者:我要成功

void collatz(int n){

if(n==1)  return 1;
if(n%2==1)
return collatz(3*n+1);
else
return collatz(n/2);
}