地特四等申論題
109年
[資訊處理] 程式設計概要
第 四 題
四、下列 C 程式的執行結果為何?(20分)
#include
#include
int funA(int x), funB(int y);
int main(void){
printf("funA(5)=%d, funB(5)=%d\n", funA(5), funB(5));
return 0;
}
int funA(int x){
int i, answer=1;
if(x<1)
return -1;
for(i=1;i<=x;i++)
answer*=(i*2);
return answer;
}
int funB(int y){
if(y<1)
return -1;
else if(y==1)
return 3;
else
return 3*y + funB(y-1);
}
📝 此題為申論題
思路引導 VIP
本題考查 C 語言中迴圈(迭代)與遞迴函式的執行過程追蹤。遇到這類題目,請分別針對 funA 建立變數狀態表追蹤迴圈變化,並針對 funB 展開遞迴呼叫堆疊直到滿足終止條件。最後將兩者的計算結果準確代入 printf 的格式化字串中即可得出正確輸出。