私はこの問題に何時間も夢中になっていて、何度もやり直していました! この時点で、私は実際に数字が私の周りを飛んでいるのを見ていると思います.
とにかく、クレジット カードの借金を返済するために、1 年間にわたって毎月支払う正しい金額を見つけるプログラムを作成することになっています。したがって、このプログラムでは、満たさなければならないいくつかの条件があります。
- 二分探索 ((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