есть код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int sumOfOdd(int* array, int n);
int main() {
setlocale(0, "rus");
int n;
printf("введите размер массива: ");
scanf_s("%d", &n);
int* array = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
printf("a[%d] = ", i);
scanf_s("%d", &array[i]);
}
int sum = sumOfOdd(array, n);
printf("сумма нечетных элементов массива: %d", sum);
free(array);
return 0;
}
int sumOfOdd(int* array, int n) {
if (n == 0) {
return 0;
}
else {
int sum = sumOfOdd(array, n - 1);
if (array[n - 1] % 2 != 0) {
return sum += array[n - 1];
}
else {
return sum;
}
}
}
иногда он считает неправильно.
например: размер массива = 4. элементы: a[0] = 1, a[1] = 2, a[2] = 3, a[3] = 4. программа выводит сумму = 4. хотя должно быть 6 (4+2=6).
в чем у меня ошибка?