程式設計基礎(虛擬碼追蹤)
以 fib(10) 呼叫下列函式 fib 時,回傳值為下列何者?
○整數型: fib(整數型: n)
整數型: a ← 0, b ← 1, t
for (i 從 1 到 n 每次加 1)
t ← a + b
a ← b
b ← t
endfor
return a
- A34
- B55
- C89
查看答案與解析
正確答案:B. 55
每次重複時,(a, b) 都把相鄰的費波那契數組往前推進一個:(0, 1) → (1, 1) → (1, 2) → (2, 3) → (3, 5) → (5, 8) → (8, 13) → (13, 21) → (21, 34) → (34, 55) → (55, 89),推進10次後回傳 a = 55。第 i 次重複之後,a 就是第 i 個費波那契數。若以單純的遞迴撰寫,同樣的值會被計算很多次,但這種寫法只需 n 次重複。
- A. 這是重複少一次(終值為 n − 1)時的值。
- B. 正確。推進10次後 a = 55。
- C. 這是回傳 b 時的值,也就是第11個費波那契數。