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

以 c(4, 2) 呼叫下列函式 c 時,c 被呼叫的次數(含第一次呼叫)為下列何者?

○整數型: c(整數型: n, 整數型: k)
  if (k = 0 or k = n)
    return 1
  endif
  return c(n − 1, k − 1) + c(n − 1, k)
  1. A5
  2. B6
  3. C11
查看答案與解析

正確答案:C. 11

c(n, k) 以巴斯卡三角形的關係,求從 n 個中選出 k 個的組合數(二項式係數)。c(4, 2) 呼叫 c(3, 1) 與 c(3, 2),它們再分別呼叫 c(2, 0) 與 c(2, 1)、c(2, 1) 與 c(2, 2),出現兩次的 c(2, 1) 都會呼叫 c(1, 0) 與 c(1, 1)。回傳1的呼叫有6次,進行兩個呼叫的呼叫有5次,合計11次。回傳值為6,與回傳1的呼叫次數一致。

  • A. 這是只計算進行兩個呼叫的呼叫次數的值。回傳1的6次也要計算。
  • B. 這是回傳值 c(4, 2) = 6,不是被呼叫的次數。
  • C. 正確。回傳1的6次加上進行兩個呼叫的5次。
練習這個領域 前往領域頁面

相關計算工具

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

  1. ⊕ 表示逐位元的互斥或。執行下列程式後 x 與 y 的值為下列何者?
  2. x 與 y 為8位元的無號整數。<< 與 >> 為邏輯移位,空出的位元補0,超出8位元的位元捨棄。∨ 表示逐位元的邏輯或。執行下列程式後 y 的值為下列何者?
  3. ∧ 表示逐位元的邏輯與。執行下列程式後 c 的值為下列何者?
  4. x 與 y 為8位元的無號整數。<< 與 >> 為邏輯移位,空出的位元補0,超出8位元的位元捨棄。∨ 表示逐位元的邏輯或。x 為 75 時,執行下列指派後 y 的值為下列何者?
  5. 下列程序 bubble 是將整數型陣列 data 以遞增順序排列的泡沫排序。swap(data, j, k) 是交換 data[j] 與 data[k] 的值的程序,陣列的元素編號從1開始。程式中的【a】應填入下列何者?