使用递归计算每月信用卡最低还款额
Posted
技术标签:
【中文标题】使用递归计算每月信用卡最低还款额【英文标题】:Using Recursion to calculate minimum monthly credit card payment 【发布时间】: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
,这显然是错误的。我会先让它工作,然后再担心编写递归版本。
所以据我了解,“如果”条件应该是“终止”条件,在这种情况下,如果信用卡余额“剩余”
【参考方案1】:
我刚做了这个。您需要在递归中添加一个计数器,这就是您将在循环中执行的操作。
所以,类似:
def function(a,b,counter=12):
"""
Docstring goes here
"""
if counter == 1:
return a+b
else:
return function(a,b,counter-1)
我发现在 edX 上的这些在线课程中也很难获得真正的帮助,因为这些课程对您可以发布的内容非常严格,而且我从未收到过与“讨论”之外的个人交谈的邀请。老实说,如果我能从 edX 课程中获得一对一的帮助,我会支付额外费用。
无论如何,希望对你有所帮助。
【讨论】:
以上是关于使用递归计算每月信用卡最低还款额的主要内容,如果未能解决你的问题,请参考以下文章
用java实现支付宝中的信用卡还款,有哪些流程,用到的数据库表有哪