返回列表 發帖

APCS_觀念題_10503_3 (練習)

本帖最後由 方浩葦 於 2024-9-7 14:14 編輯

給定一整數陣列 b[0]、b[1]、…、b[49],其中 b[k] = 2k + 5,即每個元素是 k 的兩倍加 5。
以 value = 37 呼叫以下兩個函式,假設函式 g1 及 g2 的 while 迴圈主體分別執行 m1 與 m2 次,請問 m1 與 m2 之值為何?
  1. int g1(int b[], int value) {
  2.     int r_value = -1;
  3.     int i = 0;
  4.     while (i < 50) {
  5.         if (b[i] == value) {
  6.             r_value = i; break;
  7.         }
  8.         i = i + 1;
  9.     }
  10.     return r_value;
  11. }

  12. int g2(int b[], int value) {
  13.     int r_value = -1;
  14.     int low = 0, high = 49;
  15.     int mid;
  16.     while (low <= high) {
  17.         mid = (low + high) / 2;
  18.         if (b[mid] == value) {
  19.             r_value = mid; break;
  20.         } else if (b[mid] < value) {
  21.             low = mid + 1;
  22.         } else {
  23.             high = mid - 1;
  24.         }
  25.     }
  26.     return r_value;
  27. }
複製代碼
選項:
(A) m1 = 16, m2 = 5
(B) m1 = 16, m2 = 6
(C) m1 = 17, m2 = 5
(D) m1 = 17, m2 = 6


本帖隱藏的內容需要積分高於 1 才可瀏覽

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表