Почему первая программа рекурсии Python не работает? - PullRequest
1 голос
/ 12 октября 2019

Я ответил на этот вопрос на edx: напишите программу для расчета баланса кредитной карты через год, если человек платит только минимальный ежемесячный платеж, требуемый компанией-эмитентом кредитной карты каждый месяц.

Я смогответить на проблему, используя итеративный процесс, но я попытался с помощью рекурсии. Мне удалось заставить проблему рекурсии работать.

Мой вопрос: почему мой первый код рекурсии не сработал и создал бесконечный цикл. Я просто новичок, просто хочу улучшить свои знания. Большое спасибо за помощь

'' Это мой первый код '' ''

def recur(balance,n):
    if n < 1:
        return balance
    else:
        return ((1+monthly_interest_rate)*(recur(balance, n-1)) - (minimumPaymentRate*(recur(balance, n-1)))) balance = 42
annualInterestRate = 0.2
n = 12
minimumPaymentRate = 0.04
monthly_interest_rate = annualInterestRate/12.0
recur(balance, n)

'' 'Второй код сработал' ''

def recur(balance,n):
    if n < 1:
        return balance
    else:
        bal_recur = recur(balance, n-1)
        payment_made = (minimumPaymentRate*bal_recur)
        return ((1+monthly_interest_rate)*(bal_recur - payment_made))

balance = 42
annualInterestRate = 0.2
n = 12
minimumPaymentRate = 0.04
monthly_interest_rate = annualInterestRate/12.0
recur(balance, n)

1 Ответ

0 голосов
/ 12 октября 2019

В вашем первом коде 1 ошибка:

def recur(balance,n):
    if n < 1:
        return balance
    else:
        return ((1+monthly_interest_rate)* ( (recur(balance, n-1)) - (minimumPaymentRate*(recur(balance, n-1))) ) ) #here you need to add 2 parenthesis like you do in your second code
balance = 42
annualInterestRate = 0.2
n = 12
minimumPaymentRate = 0.04
monthly_interest_rate = annualInterestRate/12.0
recur(balance, n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...