Рекурсия: найти количество положительных и количество четных элементов массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток такая вот задачка функция получает массив и его размер и находит количество положительных чисел и количество четных чисел. функция должна выполнять задачу рекурсивно. заранее спасибо.

Решение задачи: «Рекурсия: найти количество положительных и количество четных элементов массива»

textual
Листинг программы
#include <stdio.h>
 
typedef struct {
    unsigned cnt1;
    unsigned cnt2;
} info;
 
info count(const int* a, int n){
    info i;
    if(n > 0){
        i = count(a + 1, n - 1);
        if(*a > 0)
            ++i.cnt1;
 
        if((*a % 2) == 0)
            ++i.cnt2;
    } else
        i.cnt1 = i.cnt2 = 0;
    return i;
}
 
int main(void){
    int  a[] = { 1, -2, -3, -4, -5, 6, 7, -8, -9, 10 };
    info i   = count(a, sizeof(a)/sizeof(a[0]));
    
    printf("count x > 0: %u\n", i.cnt1);
    printf("count  even: %u\n", i.cnt2);
    return 0;
}

Объяснение кода листинга программы

В данном коде на языке C реализована функция count, которая рекурсивно считает количество положительных и четных элементов в массиве.

  1. Типизация данных: В начале кода объявляется структура info, которая будет использоваться для возврата значения функции count. Структура содержит две переменные: cnt1 и cnt2, которые будут использоваться для подсчета количества положительных и четных элементов соответственно.
  2. Рекурсивный алгоритм: Функция count принимает два аргумента: указатель на первый элемент массива и его размер. Если размер массива больше 0, то функция вызывает саму себя, передавая указатель на следующий элемент массива и уменьшенный на 1 размер. При этом, если текущий элемент больше 0, то увеличивается счетчик положительных чисел (cnt1). Если текущий элемент четный, то увеличивается счетчик четных чисел (cnt2). Если размер массива равен 0, то оба счетчика обнуляются.
  3. Тестирование функции: В функции main создается массив a, который содержит как положительные, так и отрицательные числа, а также четные и нечетные. Затем вызывается функция count, передавая в нее указатель на первый элемент массива и его размер. Результат работы функции сохраняется в переменной i.
  4. Вывод результатов: Наконец, в функции main выводятся результаты подсчета количества положительных и четных элементов массива с помощью функции printf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы