为了账号安全,请及时绑定邮箱和手机立即绑定

运行直到贷款余额达到 0 的递归函数的语法问题

运行直到贷款余额达到 0 的递归函数的语法问题

阿晨1998 2023-06-20 15:44:59
SA=1000.00AI=0.12MP=100.00def remainb(x):if x==0:    return 0else:     return    x=(SA+(AI/12)*SA)-MP    for i in range(x,1000000):        x=(x+(AI/12)*x)-MP        CIwoP=(x+(AI/12)*x)-x #interest every month        ptd=MP*i#payment to date        #ptdreal=(ptd-CIwoP)        #rbal=(CIwP-ptd)        print(i)#payment no.        print(ptd)#amount paid to date        print(CIwoP)#interest for that month        print(x)#balance for each month after payment        #if rbal==0: return 0        #return 多次尝试对此进行调试,但数小时内反复失败。坦率地说,我被困住了。如果有人能就如何解决这个问题给我建议(例如,运行循环直到 SA==0),我将永远感激不已。先感谢您。
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

我认为这就是您要实现的目标。切换到 while 循环更合适,因为您不确定需要循环多少次。只要 x 大于 0,这种情况就会继续。


循环方法


x = (SA + (AI / 12) * SA) - MP

payment_number = 0

while x > 0:

    x = (x + (AI / 12) * x) - MP

    CIwoP = (x + (AI / 12) * x) - x  # interest every month

    ptd = MP * payment_number  # payment to date

    payment_number += 1

    print(payment_number)  # payment no.

    print(ptd)  # amount paid to date

    print(CIwoP)  # interest for that month

    print(x)  # balance for each month after payment

递归方法


def remainb(x, payment_number=0):

    if x < 0: return

    x = (x + (AI / 12) * x) - MP

    CIwoP = (x + (AI / 12) * x) - x  # interest every month

    ptd = MP * payment_number  # payment to date

    payment_number += 1

    print(payment_number)  # payment no.

    print(ptd)  # amount paid to date

    print(CIwoP)  # interest for that month

    print(x)  # balance for each month after payment

    remainb(x, payment_number)

顺便提一下,使用良好的描述性变量名称而不是 x 是一个好习惯,我 :)


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信