
Не получается придумать рекурсивный алгоритм. Подскажите его, пожалуйста.
Задача:
Капитализация по вкладу происходит каждый месяц. Получить рекурсивно конечную сумму вклада и прибыль (разность между начальной и конечной суммой вклада).
Функцию, рекурсивно считающую с ежегодной капитализацией написал, но не пойму, как написать с ежемесячной.
Код:
def recursive_method(StartDeposit,RateInYear, TotalAmountYear): if (TotalAmountYear == 0): return StartDeposit return recursive_method(StartDeposit,RateInYear, TotalAmountYear-1)*(1+RateInYear/100)
Решение:
def recursive_method(StartDeposit,RateInYear, TotalAmountYear): AmountMonth = 12* TotalAmountYear def forMonth(StartDeposit,RateInYear, AmountMonth): if (AmountMonth == 0): return StartDeposit return forMonth(StartDeposit,RateInYear, AmountMonth-1)*(1+RateInYear/100/12) profit = forMonth(StartDeposit,RateInYear, AmountMonth) print("Полученная прибыль: ", profit - StartDeposit) print("Итоговая сумма вклада: ", profit)
3Answers

Еще может заинтересовать:

Рискну предположить:
StartDeposit
— начальная суммаRateInYear
— годовая ставкаTotalAmountMonth
— количество месяцевdef recursive_method(StartDeposit,RateInYear, TotalAmountMonth): if (TotalAmountMonth == 0): return StartDeposit return recursive_method(StartDeposit,RateInYear, TotalAmountMonth-1)*(1+RateInYear/(12*100))

Вообще ежемесячная капитализация должна быть фиксированной, она расчитывается как годовая капитализация деленная на 12 и поэтому никакой рекурсии не требуется.
Но в вашем учебном задании видимо имеется в виду что проценты начисляются каждый раз от предыдущей суммы
def recursive_method(deposit, percent_in_year, months): if (months == 0): return deposit capital = deposit * percent_in_year / 1200 return recursive_method( deposit + capital , rate_in_year , months - 1)

Передаёте начальный депозит, процентную ставку(месячную), количество лет.
Получаете на выходе конечную сумму и прибыль.
def total_profit(StartDeposit, RateInMonth, TotalAmountYear): TotalAmount = 12 * TotalAmountYear def recursive_method(StartDeposit,RateInMonth, TotalAmount): if (TotalAmount == 0): return StartDeposit return recursive_method(StartDeposit,RateInMonth, TotalAmount-1)*1+RateInMonth/100) total = recursive_method(StartDeposit,RateInYear, TotalAmount) return total, total - StartDeposit