程式設計基礎(虛擬碼追蹤)
以 s(7) 呼叫下列函式 s 時,回傳值為下列何者?
○整數型: s(整數型: n)
if (n ≦ 0)
return 0
endif
return n + s(n − 2)
- A15
- B16
- C28
查看答案與解析
正確答案:B. 16
s(7) 為了求 7 + s(5) 而呼叫 s(5),s(5) 為了 5 + s(3) 呼叫 s(3),s(3) 為了 3 + s(1) 呼叫 s(1),s(1) 為了 1 + s(−1) 呼叫 s(−1),而 s(−1) 因 n ≦ 0 回傳0。在返回呼叫端的過程中逐一相加,得到 s(7) = 7 + 5 + 3 + 1 + 0 = 16。這是7以下正奇數的和。
- A. 這是以為 n ≦ 1 時回傳0而得到的 7 + 5 + 3。實際上 s(1) 回傳 1 + s(−1) = 1。
- B. 正確。7 + 5 + 3 + 1 = 16。
- C. 這是以為呼叫 s(n − 1) 而得到的 7 + 6 + … + 1。