Рекурсивный алгоритм подсчета ежемесячной капитализации по вкладу

309 просмотра
0
0 Комментариев

Не получается придумать рекурсивный алгоритм. Подскажите его, пожалуйста.

Задача:
Капитализация по вкладу происходит каждый месяц. Получить рекурсивно конечную сумму вклада и прибыль (разность между начальной и конечной суммой вклада).

Функцию, рекурсивно считающую с ежегодной капитализацией написал, но не пойму, как написать с ежемесячной.

Код:

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)


Добавить комментарий

3 Answers

Python Опубликовано 12.12.2018
0

Рискну предположить:

  • 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))
    

Добавить комментарий
0

Вообще ежемесячная капитализация должна быть фиксированной, она расчитывается как годовая капитализация деленная на 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)

Добавить комментарий
0

Передаёте начальный депозит, процентную ставку(месячную), количество лет.
Получаете на выходе конечную сумму и прибыль.

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

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up