如何解决递归功能的语法一直困扰到贷款余额达到0
SA=1000.00
AI=0.12
MP=100.00
def remainb(x):
if x==0:
return 0
else:
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),我将永远感激不已。预先谢谢你。
解决方法
我认为这是您要实现的目标。切换到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和i是一个好习惯。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。