使用递归计算每月信用卡最低还款额

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实现支付宝中的信用卡还款,有哪些流程,用到的数据库表有哪

每月信用卡付款计算器显示语法错误

计算每月还款金额

Python笔记-房贷计算(本息和本金,每月还利息和每月还本金)及作图对比

还在头疼每月房贷还款?这个房贷计算机让你一目了然

c语言:购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。