функция типа 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]=
→ Ссылка