Для решения задачи нам понадобится рекурсивная функция, которая будет проходить через каждый элемент массива и суммировать только нечетные элементы. Для начала, создадим прототип данной функции:
int sum_odd_elements(int* array, int size);
Функция принимает указатель на массив array
и его размер size
. Возвратное значение функции - сумма нечетных элементов массива.
Далее, опишем саму рекурсивную функцию:
int sum_odd_elements(int* array, int size) { // Базовый случай: // Если размер массива равен 0, возвращаем 0 if (size == 0) { return 0; } // Рекурсивный случай: // Если первый элемент массива нечетный, возвращаем его сумму с остальными элементами if (array[0] % 2 != 0) { return array[0] + sum_odd_elements(array + 1, size - 1); } // Если первый элемент массива четный, возвращаем сумму остальных элементов else { return sum_odd_elements(array + 1, size - 1); } }
Вначале функция проверяет базовый случай - если размер массива равен 0, возвращаем 0.
Дальше, она проверяет условие для первого элемента массива. Если он нечетный, возвращаем его значение плюс рекурсивный вызов функции для оставшейся части массива (array + 1
) и уменьшенного размера массива (size - 1
). Иначе, если первый элемент четный, возвращаем только рекурсивный вызов функции для оставшейся части массива и уменьшенного размера.
Теперь можно протестировать рекурсивную функцию:
#include <stdio.h> int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); int sum = sum_odd_elements(arr, size); printf("Сумма нечетных элементов массива: %d", sum); return 0; }
Вывод программы будет следующим:
Сумма нечетных элементов массива: 9
В данном примере, функция sum_odd_elements
будет последовательно проходить по элементам массива и находить сумму нечетных элементов (1 + 3 + 5 = 9).