Нужно было написать программу, которая считает кол-во элементов массива больше заданного числа

Когда возвращаю функцию, выдаёт ошибку "отсутствуют экземпляры перегруженная функция count"

int count(int num, int* arr, int size, int res)
{
    if (size == 0) return res;
    if (arr[0] > num)
        return count(arr + 1, size - 1, res + 1);
    else
        return count(arr + 1, size - 1, res);
}

Ответы (1 шт):

Автор решения: Booch

Конкретно в вашем случае проблема ошибки компиляции вызвана тем, что вы неверно передаете параметры при рекуррентном вызове функции. Ожидается 4 параметры, а вы передаете 3. Но в целом, решать данную задачу через рекурсию довольно странно, я бы предложил делать это следующим образом:

#include <iostream>

using namespace std;

int count(int num, int* arr, int size)
{
    int counter = 0;
    if (size <= 0)
    {
        return counter;
    }
    else
    {
        for (int i = 0; i < size; i++)
        {
            if (arr[i] > num)
            {
                counter++;
            }
        }
        return counter;
    }
}

int main()
{
    int size, number;
    cin >> size >> number;
    int* arr = new int[size];

    for (int i = 0; i < size; i++)
    {
        cin >> arr[i];
    }

    int counter = count(number, arr, size);

    cout << counter << endl;

    return 0;
}

Если же Вы все-таки решите дорабатывать своё решение, то, как минимум, стоит учесть случай передачи в качестве параметра size отрицательного числа.

→ Ссылка