阿摩線上測驗 登入

申論題資訊

試卷:112年 - 112 地方政府特種考試_四等_資訊處理:程式設計概要#118364
科目:程式設計
年份:112年
排序:0

題組內容

一、撰寫遞迴函式是重要程式設計技巧之一。

申論題內容

(一)請說明下列遞迴函式 findnum 目的為何?(5 分)
657c16bd61fde.jpg

詳解 (共 1 筆)

詳解 提供者:hchungw
圖片中的遞迴函式 findnum 的目的是在一個整數陣列 price 中找到比給定的 num 數值大的最小元素。items 是陣列 price 中的元素數量,函式 findnum 通過遞迴方式尋遍陣列 price。
當 findnum 函式被呼叫時,它會檢查當前索引 i 是否小於 items 的數量,如果是,則繼續處理。在每次遞迴調用中,函式檢查當前的 num 值是否小於 price[i]。如果 num 小於 price[i],則 num 被賦值為 price[i],並且遞迴繼續使用下一個索引 i+1 來尋找可能存在的更小但仍然大於原始 num 的數值。這個過程一直持續到遍歷完整個 price 陣列。最終,函式返回更新後的 num 值,即比原始 num 大的最小 price 元素。
主函式 main 從用戶那裡獲取 price 陣列的元素,並呼叫 findnum 函式以 -1 作為初始 num 值開始尋找。這意味著它會找到 price 陣列中的最小元素。最後,它打印出找到的那個值。
這個遞迴邏輯有一個問題:它沒有設置停止遞迴的條件以防止 num 未被賦予任何 price 陣列中的值(例如,當所有 price 的值都小於初始 num 值時)。此外,遞迴函式也沒有處理相等的情況,只有在 price[i] 嚴格大於 num 時才更新 num。