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

Python 3.x 为什么第一个python递归程序不起作用?,python-3.x,recursion,edx,Python 3.x,Recursion,Edx,我在edx上回答了这个问题:如果一个人每月只支付信用卡公司要求的最低月付款,那么写一个程序来计算一年后的信用卡余额 我能够使用迭代过程来回答这个问题,但我尝试使用递归。我设法解决了递归问题 我的问题是为什么我的第一个递归代码不起作用,并产生了一个无限循环。 我只是一个初学者,只是想提高我的知识。非常感谢你帮助我 ''' 这是我的第一个代码 ''' def循环(平衡,n): 如果n

我在edx上回答了这个问题:如果一个人每月只支付信用卡公司要求的最低月付款,那么写一个程序来计算一年后的信用卡余额

我能够使用迭代过程来回答这个问题,但我尝试使用递归。我设法解决了递归问题

我的问题是为什么我的第一个递归代码不起作用,并产生了一个无限循环。 我只是一个初学者,只是想提高我的知识。非常感谢你帮助我

''' 这是我的第一个代码 '''

def循环(平衡,n):
如果n<1:
返回余额
其他:
回报率((1+月利率)*(重复(余额,n-1))-(最低支付利率*(重复(余额,n-1)))余额=42
年利率=0.2
n=12
最低付款率=0.04
月利率=年利率/12.0
重现(平衡,n)
''' 第二个代码起作用了 '''

def循环(平衡,n):
如果n<1:
返回余额
其他:
余额重现=重现(余额,n-1)
付款=(最低付款率*余额重复)
回报率((1+月利率)*(余额重现-付款))
余额=42
年利率=0.2
n=12
最低付款率=0.04
月利率=年利率/12.0
重现(平衡,n)

您的第一个代码中有1个错误:

def循环(平衡,n):
如果n<1:
返回余额
其他:
return((1+月利率)*((重复(余额,n-1))-(最低支付利率*(重复(余额,n-1))))#这里您需要像在第二个代码中一样添加两个括号
余额=42
年利率=0.2
n=12
最低付款率=0.04
月利率=年利率/12.0
重现(平衡,n)

您的第一个代码中有1个错误:

def循环(平衡,n):
如果n<1:
返回余额
其他:
return((1+月利率)*((重复(余额,n-1))-(最低支付利率*(重复(余额,n-1))))#这里您需要像在第二个代码中一样添加两个括号
余额=42
年利率=0.2
n=12
最低付款率=0.04
月利率=年利率/12.0
重现(平衡,n)

对我来说效果很好,尽管结果与第二个脚本略有不同。看见平衡变量声明与函数return位于同一行时出现语法错误,但如果实际使用该语句,则会出现错误,而不是无限循环。对我来说效果很好,尽管结果与第二个脚本略有不同。看见平衡变量声明与函数return位于同一行时会出现语法错误,但如果实际使用该语句,则会出现错误,而不是无限循环。
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)