當你調用 test 函數並傳入 a = 52 和 b = 40:
- 首先,函數檢查 a % b(52 % 40)是否為零,不為零,因為 52 除以 40 的餘數是 12。
- 因為餘數不為零,所以它遞迴地調用 test(b, a % b) 即 test(40, 12)。
- 在下一次遞迴調用中,函數檢查 a % b(40 % 12)是否為零,不為零,因為 40 除以 12 的餘數是 4。
- 函數再次遞迴地調用 test(b, a % b) 即 test(12, 4)。
- 這次,a % b(12 % 4)為零,因為 12 除以 4 沒有餘數。
- 因為餘數為零,函數返回當前的 b,也就是 4。
這一遞迴過程就是計算最大公約數的過程,最終結果是 4,表明 52 和 40 的最大公約數是 4。這也是程式執行結果的原因。