題組內容

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

(二)請將 findnum()函式改寫成非遞迴的函式。 (10 分)

詳解 (共 5 筆)

ALun
ALun
詳解 #6047626
2024/03/17
int findnum (int i,i...
(共 177 字,隱藏中)
前往觀看
aabb177
aabb177
詳解 #5986914
2023/12/15

int findnum (int i,int num){
    for (i ; i<items ; i++){
        if (num <price[i])
            num = price[i];
    }
    
    return num;
}

hchungw
hchungw
詳解 #6057909
2024/03/31
要將 findnum() 函式改寫成非遞迴的函式,我們可以使用一個循環來遍歷 price 陣列中的元素。以下是用 C 語言改寫的非遞迴版本的 findnum() 函式:
c
Copy code
int findnum(int num) {
    int i, found = -1;
    for (i = 0; i < items; i++) {
        if (num < price[i]) {
            if (found == -1 || price[i] < price[found]) {
                found = i;
            }
        }
    }
    return found != -1 ? price[found] : -1; // 如果找到適合的值就返回,否則返回 -1 表示沒有找到
}
這個函式逐一檢查每個元素,只有當該元素大於 num 時才考慮它。如果找到這樣的元素,函式會檢查是否已經找到了一個元素(found != -1),如果已經找到了,它會比較目前找到的元素和新元素,保留較小的那個。如果到最後都沒有找到任何元素(found 仍為 -1),則函式返回 -1,表示沒有找到任何大於 num 的元素。
請注意,為了讓這段代碼能夠正常運作,items 和 price 變數必須在此函式的作用域內可見,例如它們可以是全局變數,或者你可以將它們作為參數傳遞給 findnum 函式。
Triple w.
Triple w.
詳解 #6211800
2024/09/18
故事化描述 想像一個商店老闆正在清點一...

(共 263 字,隱藏中)
前往觀看
Aaron Lim
Aaron Lim
詳解 #5987803
2023/12/17
findnum 函式可以改寫成非遞迴的函...
(共 590 字,隱藏中)
前往觀看