为什么第一个python递归程序不起作用?

时间:2019-10-12 15:45:41

标签: python-3.x recursion edx

我在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 :(得分:0)

您的第一个代码中有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)