функция типа double выдает -nan(ind), а когда поменять на "int", то всё нормально работает
#include <iostream>
using namespace std;
double Max(double* arr, int n, int &max) {
if (n>1)
{
if (arr[n - 1] >= arr[max])
max = n - 1;
n--;
Max(arr, n, max);
}
else {
return arr[max];
}
}
int main()
{
int arrSize, max = 0;
cout << "Enter size of array\n";
cin >> arrSize;
double* arr = new double[arrSize]();
for (int i = 0; i < arrSize; i++)
{
cout << "arr[" << i << "] = ";
cin >> arr[i];
}
cout << "Max element arr[" << max << "]=" << Max(arr, arrSize, max) << endl;
delete[]arr;
return 0;
}```
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Скажите, при, скажем, n == 2 какое значение вернет текущий вызов Max()? Не тот, который будет в самом конце рекурсии, а именно текущий? Оператора return же нет... Добавьте:
n--;
return Max(arr, n, max);
}
И - то, что я вам уже писал, внесу в ответ: вывод
cout << "Max element arr[" << max << "]=" << Max(arr, arrSize, max) << endl;
неверный. До С++17 нет никаких гарантий, что Max() вычислится до вывода max, а начиная с С++17 есть обратная гарантия — что вы обязательно получите в выводе
Max element arr[0]=