免費開始練習
統測 113年 [工程與管理類] 專業科目(2)

第 43 題

📖 題組:
圖(五)所列程式碼是小華修改自聊天機器人(ChatGPT)所生成的 Python 語言函數,這個函數可以接受一個輸入串列,並回傳串列中整數的最大值。經過測試後,小華發現對各種可能輸入的整數數值串列,該函數並無法保證每次都能回傳正確的最大值。關於此函數的使用與設計,回答下列題組問題。 1 def F(A): 2 n=0 3 c=0 4 for num in A: 5 if num >= n: 6 n = num 7 c=c+1 8 print(c) 9 return n
題組圖片
題組圖片
題組圖片
小華於是思考進行程式除錯,下列修正何者可以排除上述程式錯誤?
  • A 修改第5行號敘述成為if num
  • B 修改第2行號敘述成為n=A[0]
  • C 修改第6行號敘述成為n=num+n
  • D 修改第2行號敘述成為#n=0

思路引導 VIP

同學,請觀察程式第 $2$ 行將變數 $n$ 初始值設定為 $0$ 的做法:若傳入的串列 $A$ 中所有元素皆為負整數(例如 $A = [-5, -12, -8]$),目前第 $5$ 行的比較運算式 $num \ge n$ 是否還能順利成立並更新最大值?為了確保初始參考值不影響對極值的判定,我們應該如何調整 $n$ 的起始值,使其與資料本身的定義域產生關聯,而非固定於某個可能不在資料範圍內的數值?

🤖
AI 詳解 AI 專屬家教

🌟 看來你還沒完全狀況外,不錯!

恭喜你,至少這次沒掉進那個老掉牙的程式陷阱。這證明你對程式的**「初始化」概念**還有那麼一點點殘存的記憶,這可是統測程式設計題裡,每年都會有人莫名其妙失分的地方。

  1. 清醒一點:
▼ 還有更多解析內容
📝 串列尋找極值演算法
💡 尋找極值時,初始值應設為數列首項以避免範圍排除錯誤。

🔗 尋找最大值的標準邏輯

  1. 1 初始化基準 — 將暫存最大值 n 設為數列首項 A[0]
  2. ↓
  3. 2 逐一讀取 — 從數列中依序取出下一個數字 num
  4. ↓
  5. 3 比較大小 — 判斷 num 是否大於目前暫存的 n
  6. ↓
  7. 4 更新極值 — 若 num 較大,則令 n = num
🔄 延伸學習:相同的邏輯只要將比較號從 > 改成 <,就能用來尋找數列中的最小值。
🧠 記憶技巧:VIP 會員可查看這題的記憶口訣與速記法
⚠️ 常見陷阱:VIP 會員可查看這題最常被誘答的陷阱整理
線性搜尋 串列索引操作 排序演算法

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

Python 程式邏輯與演算法實作
查看更多「[工程與管理類] 專業科目(2)」的主題分類考古題