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

÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 pow(2, 10) 呼叫下列函式 pow 時,pow 被呼叫的次數(含第一次呼叫)為下列何者?

○整數型: pow(整數型: x, 整數型: n)
  if (n = 0)
    return 1
  endif
  整數型: h ← pow(x, n ÷ 2)
  if (n mod 2 = 0)
    return h × h
  endif
  return h × h × x
  1. A5
  2. B10
  3. C11
查看答案與解析

正確答案:A. 5

pow(x, n) 將 n 減半後的 pow(x, n ÷ 2) 的結果平方,以求得 x 的 n 次方(n 為奇數時再乘以 x)。n 依序變為 10、5、2、1、0,在 n = 0 時停止遞迴,因此被呼叫5次。回傳值為 2¹⁰ = 1024。若像 x × pow(x, n − 1) 那樣讓 n 每次減1,則會從 n = 10 到0被呼叫11次。讓 n 每次減半時,呼叫次數大約與 log₂ n 成正比。

  • A. 正確。n = 10、5、2、1、0 共5次。
  • B. 這是指數 n = 10 的值。n 是每次減半,而不是每次減1。
  • C. 這是 n 每次減1的遞迴(x × pow(x, n − 1))的呼叫次數。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 以 s(7) 呼叫下列函式 s 時,回傳值為下列何者?
  2. 以 p(3) 呼叫下列程序 p 時,輸出的值的順序為下列何者?
  3. 以 fib(10) 呼叫下列函式 fib 時,回傳值為下列何者?
  4. 以 c(4, 2) 呼叫下列函式 c 時,c 被呼叫的次數(含第一次呼叫)為下列何者?
  5. ⊕ 表示逐位元的互斥或。執行下列程式後 x 與 y 的值為下列何者?