递归给出了错误的答案,没有错误,但我无法弄清楚出了什么问题



我正试图解决一个关于计算一年内需要多少付款才能结清信用余额的问题。年利息是0.2,月余额的公式是:(余额-月供(+(0.2/12(*(余额月供(,如果我重复这个计算12次,我可以在年底得到余额。最困难的部分是计算一年中我们需要清理的余额。这是我的代码,它正在运行,但我不明白为什么它给出了错误的答案。

def clear(b,m,x):
while m !=0:
b=(b-x)+(0.2/12)*(b-x)
x=x        
m-=1
if m == 0 and b<= 0:
return x
else:
return clear(b,m+12,x+20)



m=12
b=3329
x=20
print(clear(b, m, x))

测试值3329应该返回310,但我的代码返回160。。。非常感谢!

谢谢大家的帮助,我明白了为什么。。。对于可能看到这个问题的人,请记住递归将值从公式范围返回到全局范围。。。在我的代码中,它最后返回b,b的值随着范围的变化而变化。。。在我的情况下,从x=20到60,余额在增加,但在100之后,每次都会减少,而b则从公式范围返回到全局范围。例如,当x=60时,b的值增加到大约6000,但当它是100或120时,它减少到大约2000-3000,然后在x=160时,b值小于0,我的代码将其作为结果。。。这是正确的代码!在我修复了递归中b的值之后,它工作正常!

def clear(b,m,x):
b=4773
while m !=0:
b=(b-x)*(0.2/12+1)
m-=1
if m == 0 and b<= 0:
return x
else:
return clear(b,m+12,x+10)



m=12
b=3329
x=20
print(clear(b, m, x))

相关内容

最新更新