國中教甄|資訊科技資訊科技107 年第 30 題單選題
下列選項何者是執行下列程式所得的結果? #include <stdio.h> int doit (int a[], int s) { int here=0; if (s==3) { return (a[s-1]*a[s-1]); } else { here = a[s-1]*a[s-1]; return (here+doit(a,s-1)); } } void main() { int a[6] = {1, 2, 3, 4, 5, 6}; printf(“%d\n”,doit(a, 5)); }
C正確答案
程式透過遞迴計算陣列元素平方和,當 s 遞減至 3 時觸發基底條件停止遞迴,總和為 5 的平方加 4 的平方加 3 的平方,結果為 50。
逐選項解析
A91✕ 易錯陷阱
若誤以為遞迴會執行到 s=1 且包含 a[5] 的平方(36+25+16+9+4+1=91),則會錯選此項。
B55✕ 易錯陷阱
若誤以為遞迴會執行到 s=1(25+16+9+4+1=55),忽略了 s==3 時的基底條件會直接回傳而不再繼續遞迴,則會錯選此項。
立即註冊,看完整詳解
這題的完整詳解,註冊就能看 · 每天 2 題免費
精選詳解- 完整逐選項解析
- 秒殺解題技巧與破題關鍵
- 關鍵知識表整理
- 陷阱與易錯提醒
- 同考點歷屆題庫連續刷題與錯題本