高考申論題
110年
[資訊處理] 程式設計
第 三 題
三、請問下列程式碼之輸出結果以及該程式碼的目的為何?(25 分)
#include "stdio.h"
int f(int a, int b) {
if(a%b == 0) return b;
return f(b,a%b);
}
int main(void) {
printf("f(21,9) = %d\n",f(21,9));
printf("f(6,44) = %d\n",f(6,44));
return 0;
}
📝 此題為申論題
思路引導 VIP
看到遞迴函數 f(a, b) 且傳遞參數為 (b, a%b) 時,應立即聯想到經典的「輾轉相除法」(歐幾里得演算法)。解題時先依序將數值代入函數追蹤遞迴步驟求得輸出,再點出該演算法的數學意義即為求取兩整數的最大公因數。
🤖
AI 詳解
AI 專屬家教
【解題思路】本題考查遞迴函數的執行流程追蹤與經典演算法的辨識,此遞迴結構為標準的「輾轉相除法」(歐幾里得演算法)。 【詳解】 一、執行過程推導:
▼ 還有更多解析內容