程式設計基礎(虛擬碼追蹤)

以 s(7) 呼叫下列函式 s 時,回傳值為下列何者?

○整數型: s(整數型: n)
  if (n ≦ 0)
    return 0
  endif
  return n + s(n − 2)
  1. A15
  2. B16
  3. 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。
練習這個領域 前往領域頁面

相關計算工具

程式設計基礎(虛擬碼追蹤)的其他題目

  1. 以 p(3) 呼叫下列程序 p 時,輸出的值的順序為下列何者?
  2. 以 fib(10) 呼叫下列函式 fib 時,回傳值為下列何者?
  3. 以 c(4, 2) 呼叫下列函式 c 時,c 被呼叫的次數(含第一次呼叫)為下列何者?
  4. ⊕ 表示逐位元的互斥或。執行下列程式後 x 與 y 的值為下列何者?
  5. x 與 y 為8位元的無號整數。<< 與 >> 為邏輯移位,空出的位元補0,超出8位元的位元捨棄。∨ 表示逐位元的邏輯或。執行下列程式後 y 的值為下列何者?