題組內容
二、
(一)下列的函式是 C 語言的 function:
請問呼叫 xyz(15, 40)以及呼叫 xyz(xyz(42, 63), xyz(105, 60))各會得到
多少?(10 分)
詳解 (共 1 筆)
詳解
題目的程式碼,其實就是暴力搜尋法的找最大公因數演算法
題目的XYZ(15,40)為例
| i | x=15 % i | y=40 % i | 是否跳脫 |
| 15 | 0 | 10 | |
| 14 | 1 | 12 | |
| 13 | 2 | 1 | |
| 12 | 3 | 4 | |
| 11 | 4 | 7 | |
| 10 | 5 | 0 | |
| 9 | 6 | 4 | |
| 8 | 7 | 0 | |
| 7 | 1 | 5 | |
| 6 | 3 | 4 | |
| 5 | 0 | 0 | V |
(依程式邏輯,i在14至6這一段在執行 X % i後,就會因為沒有等於0,就往下找)
15與40最大公因數為5
由此可以推出xyz(xyz(42, 63), xyz(105, 60))
xyz(42, 63) =21
xyz(105, 60) = 15
xyz(21,15)=3
由此可以推出xyz(xyz(42, 63), xyz(105, 60))
xyz(42, 63) =21
xyz(105, 60) = 15
xyz(21,15)=3