Предположим, что второй биржевой маклер может совершить только одну покупку, но может продать ее в любой день после этого, то есть биржевой маклер может приобрести акцию в какой-то день i (0 <= i <= n - 2),и может продать его в любой день, начиная с дня i + 1 до дня n - 1. Напишите функцию double get_max_profit (double values [], int n), которая возвращает максимальную прибыль, которую этот второй биржевой маклер может получить, учитывая цены массива и егоразмер n в качестве ввода.Функция должна вернуть 0, если максимальная прибыль меньше или равна 0. Например: • Если цены = {1.0, 5.1, 7.3, 9.4, 4.7, 8.0, 15.0, 6.2} и n = 8, функция должна вернуть14,0.Биржевой маклер должен купить акцию в день 0 и продать ее в день 6, где максимальная прибыль составляет цены [6] - цены [0] = 15,0 - 1,0 = 14,0. </p>
Я пытался рекурсивно в этомно это не дает последнее значение, которое требуется для этого вопроса, как это дает 9.1, но в конце выводит ноль
double get_max_profit(double prices[], int n){
static int day = 0;
static double max_profit = 0.0;
printf("the profit is %lf the day is %d\n", max_profit, day);
if (day >= n-1){
if (max_profit <=0){
return 0;
}
return max_profit;
}
for (int i = day; i < n; i++){
if (day+1 >= n){
if (max_profit <=0){
return 0;
}
return max_profit;
}
double profit = prices[i] - prices[day];
if (profit > max_profit){
max_profit = profit;
}
}
day = day +1;
get_max_profit(prices, n);
}
int main(int argc, char *argv[]) {
double prices[] = {2.1, 5.3, 7.7, 9.8, 1.2, 10.3, 5.0};
int n = 7;
double max_lim = get_max_profit(prices, n);
printf("maximum profit is %lf \n", max_lim);
}