35 對於下列 C 程式片段執行 Cfun(3)的輸出內容,下列敘述何者錯誤?
61dbb00cf19b8.jpg
(A)輸出內容中有整數 5
(B)輸出內容中有整數 8
(C)輸出內容中有整數 9
(D)輸出內容中有整數 16

答案:登入後查看
統計: A(15), B(18), C(77), D(20), E(0) #2851817

詳解 (共 2 筆)

#5406546
n不等於1時 進入while迴圈 當n=...
(共 151 字,隱藏中)
前往觀看
11
0
#5979832

這段程式是個簡單的演算法,叫做Collatz conjecture,它根據一個數學問題而來,將數字 n 按照以下規則處理:

1. 如果 n 是奇數,則將 n 變為 3n+1。
2. 如果 n 是偶數,則將 n 變為 n/2。

這個程式會將結果印出來,直到 n 變成 1 為止。我們來看看 Cfun(3) 的執行過程:

初始 n = 3。
因為 3 是奇數,所以進入迴圈,計算 3*3 + 1 = 10,印出 10。
現在 n = 10,因為是偶數,所以 n 變為 10 / 2 = 5,印出 5。
n 為奇數,變成 3*5 + 1 = 16,印出 16。
n 為偶數,變成 16 / 2 = 8,印出 8。
n 為偶數,變成 8 / 2 = 4,印出 4。
n 為偶數,變成 4 / 2 = 2,印出 2。
n 為偶數,變成 2 / 2 = 1,印出 1。
因為 n 現在等於 1,迴圈結束。

所以 Cfun(3) 的輸出內容應該是:10 5 16 8 4 2 1。

4
0