Нужно было написать программу, которая считает кол-во элементов массива больше заданного числа
Когда возвращаю функцию, выдаёт ошибку "отсутствуют экземпляры перегруженная функция 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 отрицательного числа.