程式設計基礎(虛擬碼追蹤)
÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 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
- A5
- B10
- 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))的呼叫次數。