【问题标题】: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,这显然是错误的。我会先让它工作,然后再担心编写递归版本。
  • 所以据我了解,“如果”条件应该是“终止”条件,在这种情况下,如果信用卡余额“剩余”

标签: python recursion iteration credit-card


【解决方案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 课程中获得一对一的帮助,我会支付额外费用。

无论如何,希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2018-08-09
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多