我已经为这个问题发疯了好几个小时,而且我一直在一遍又一遍地重做它!在这一点上,我认为我实际上看到了数字在我周围飞舞。
无论如何,我应该编写一个程序,找出一年内每月支付的正确金额,以偿还信用卡债务。因此,对于这个程序,必须满足一些条件。
- 必须使用二分搜索 ((low + high) / 2)
- 有一个固定的平衡
- 有年利率。
这是我目前的代码,我得到的只是无限循环。我在这里做错了什么?
balance = 320000
annualInterestRate = 0.2
monthly_interest = float(annualInterestRate) / 12.0
lower_bound = float(balance / 12)
upper_bound = (balance * (1 + monthly_interest)**12) / 12.0
epsilon = 0.01
ans = float(lower_bound + upper_bound) / 2
while abs((balance * (1 + monthly_interest)**12) / 12.0) >= epsilon:
ans = float(lower_bound + upper_bound) / 2
total = float(ans * 12)
new_balance = 0
interest = 0
for month in range(0, 12):
interest += ans + (1 + monthly_interest)
new_balance += ans + interest
if new_balance > balance:
upper_bound = ans
print "low" + str(new_balance)
elif new_balance < balance:
lower_bound = ans
print "high" + str(new_balance)
else:
print "What's going on here?"
print "Lowest payment: %r" % ans