阿摩線上測驗 登入

申論題資訊

試卷:95年 - 095年高等三級暨普通資訊處理(普考)#32453
科目:程式設計
年份:95年
排序:0

申論題內容

五、請撰寫一遞迴函式(recursive function):int OddSUM (int a[] , int n)。能計算出有 n 個元素的整數陣列 a 中所有奇數元素的總和。(20 分) 注意:必須以遞迴方式撰寫。
 例如:int a[3];
             a[0]=3; a[1]= 4; a[2]=7;
             int k=OddSUM (a[],3); 
             則 k 將等於 10

詳解 (共 1 筆)

詳解 提供者:hchungw
#include <iostream>
using namespace std;
// 遞迴函式,計算陣列中所有奇數元素的總和
int OddSUM(int a[], int n) {
    // 遞迴的基本情況
    if (n <= 0) {
        return 0;
    }
    // 檢查當前元素是否為奇數,如果是,則加到總和中
    if (a[n - 1] % 2 != 0) {
        return a[n - 1] + OddSUM(a, n - 1);
    } else {
        return OddSUM(a, n - 1);
    }
}
int main() {
    int a[3] = {3, 4, 7};
    int k = OddSUM(a, 3);
    cout << "Sum of odd elements in the array: " << k << endl; // 應該輸出 10
    return 0;
}
這個函式首先檢查遞迴是否應該結束(即n是否小於等於0)。如果不是,函式檢查陣列中的當前元素(a[n - 1])是否為奇數。如果是奇數,函式將其加到總和中並遞迴調用自己處理剩餘的元素;如果不是奇數,則函式僅遞迴調用自己,不改變總和。
這種方法將整個陣列的遍歷分解為多個較小的步驟,每次調用僅處理陣列中的一個元素,這是遞迴函式的典型特徵。