#下面的代碼是二分法求信用卡每月最低還款的題,這是正確代碼
def?pay(balance,annualInterestRate):
????if?balance<=0:
????????return?None
????low=balance/12.0
????high=(balance*(1+annualInterestRate/12.0)**12)/12.0
????while?True:
????????b=balance
????????pay2=(low+high)/2
????????for?i?in?range(12):
????????????b=(b-pay2)*(1+annualInterestRate/12.0)
????????if?abs(b)<=0.01:
????????????return?pay2
????????elif?b>0.01:
????????????low=pay2
????????else:
????????????high=pay2
print?pay(320000,0.2)
#這是錯(cuò)誤代碼!請(qǐng)問(wèn)這下面應(yīng)該怎么改,應(yīng)該是錯(cuò)在while的代碼塊!求問(wèn)用while寫(xiě)的話怎么改??
def?pay(balance,annualInterestRate):
????if?balance<=0:
????????return?None
????b=balance
????low=b/12.0
????high=(b*(1+annualInterestRate/12.0)**12)/12.0
????pay2=(low+high)/2
????while?b>0.01:
????????if?pay2>b*(1+annualInterestRate/12):
????????????high=pay2
????????else:
????????????low=pay2
????????pay2=(low+high)/2.0
????????b=(b-pay2)*(1+annualInterestRate/12.0)
????return?pay2
print?pay(320000,0.2)還想弱弱的問(wèn)一下?這個(gè)能不能通過(guò)牛頓拉夫遜算法計(jì)算?
添加回答
舉報(bào)
0/150
提交
取消