Рекурсия для нахождения максимальной прибыли

#python-3.x #algorithm #recursion

#python-3.x #алгоритм #рекурсия

Вопрос:

Учитывая массив чисел, представляющих цены акций компании в хронологическом порядке, напишите функцию, которая вычисляет максимальную прибыль, которую вы могли бы получить от покупки и продажи этих акций.

 k = [1, 3, 2, 8, 4, 10] # given number of stocks


def max_profit(price, start, end):

    if (end <= start): # If the stocks can't be bought
        return 0

    profit = 0
    for i in range(start, end):
        for j in range(i   1, end   1):
            if (price[j] > price[i]):
                curr_profit = price[j] - price[i]   max_profit(
                    price, start, i - 1)   max_profit(price, j   1, end)

                profit = max(profit, curr_profit)
    return profit


n = len(k)
print(max_profit(k, 0, n - 1))
 

С принтами 14

Это пример кода для нахождения максимальной прибыли для заданных акций. У меня проблема только с одной строкой.

curr_profit = price[j] - price[i] max_profit(price, start, i - 1) max_profit(price, j 1, end)

Что делает эта рекурсия max_profit(price, start, i - 1) max_profit(price, j 1, end) ?

Заранее спасибо

Также вместо использования i или j в рекурсии, почему мы использовали i-1 и j 1

Комментарии:

1. Ваш вопрос в сторону, рекурсия звучит как ужасный способ решения проблемы.

2. Код покупает акции по i и продает акции по j . Затем он добавляет лучшую прибыль из синей и зеленой областей .