【发布时间】:2017-12-06 01:33:51
【问题描述】:
我已经使用迭代为 EdX 课程作业问题编写了一个解决方案。
代码采用信用卡余额和年利率来计算在 12 个月内还清余额(加上任何利息)所需的最低每月付款。
这是我的迭代代码:
def minimum_payment_iter(ann_interest, balance):
month_int = ann_interest/12
remaining = balance
payment = 10
months = 1
while remaining > 0:
months = 1
payment += 10
remaining = balance
while months < 13:
remaining -= payment
remaining += remaining*month_int
months += 1
return payment
我尝试了递归版本,但我已经超过了最大递归深度:
def minimum_payment_recur(ann_interest, balance, payment = 10):
month_int = ann_interest/12
remaining = balance
month = 1
if remaining <= 0:
return payment
else:
remaining -= payment
remaining += remaining*month_int
month += 1
return minimum_payment_recur(ann_interest, balance, payment + 10)
【问题讨论】:
-
您不必将
remaining作为第二个参数传递给递归调用而不是balance吗? -
此外,在递归版本中,
month总是重新初始化为 1。month_int是什么? -
month_int为月利率,年利率除以12
-
您的非递归版本不起作用。
minimum_payment_iter(.06, 100.00)的结果是20,这显然是错误的。我会先让它工作,然后再担心编写递归版本。 -
所以据我了解,“如果”条件应该是“终止”条件,在这种情况下,如果信用卡余额“剩余”
标签: python recursion iteration credit-card