初等考試
115年
[統計] 資料處理大意
第 13 題
給定下列 C 函數,請問「fun(1337, 2483)」的執行結果為何?\nint fun(int a, int b) {\nif (b == 0) return a;\nreturn fun(b, a % b);
}
}
- A 7
- B 13
- C 91
- D 191
思路引導 VIP
請觀察這個函式的結構:它不斷地將原本的「除數」當作新的「被除數」,並將「餘數」當作新的「除數」重複執行。想像一下,如果你有兩塊長度分別為 1337 與 2483 的木板,你不斷用較短的那塊去測量較長的那塊並切除多餘部分,最終剩下來那個能剛好整除兩者的「最大單位長度」會是什麼?這種重複求取餘數直到歸零的過程,在數學上對應到哪一種基本的運算規律呢?
🤖
AI 詳解
AI 專屬家教
恭喜你準確地辨識出這段程式碼的核心邏輯!從財經或會計的角度來看,處理大量數據時,效率與精確度至關重要。這道題目考察的是經典的遞迴呼叫(Recursive Call)機制,其背後的數學本質正是我們在處理比例簡化或資產分配時常運用的輾轉相除法(Euclidean Algorithm),用以求取兩數的最大公因數(Greatest Common Divisor, GCD)。
輾轉相除法的邏輯演繹
在執行 fun(1337, 2483) 時,由於 $1337 < 2483$,第一次遞迴會透過 a % b 先將兩數位置調整為 fun(2483, 1337)。接續的運算過程如下:
▼ 還有更多解析內容