首先,如果你正在做MITX鍛鍊,並完成了先前的測試(只是爲了增加在猜測10)你需要一小步才能得到它。只需要對條件進行一些調整並查看年度結果。
關於平分搜索我會盡力澄清概念。你將永遠有兩個極端,最小和最大。並且總會在四肢中間開始猜測。
第一次猜測後,您需要根據年度結果調整四肢。如果一年後支付了最低限度的飲料,女孩,節目和其他東西,你沒有支付總餘額,你肯定需要提高最低限度。否則,例如,如果您在第10個月支付了總餘額,則您需要多喝水,並明年見到新女孩!只是開玩笑...你需要減少最低限度。這是你需要支付難
在運動中完成一年後做檢查,我們有:
- 平衡和annualInterestRate =給予(我們並不需要關心)
- 最小值(下限)=平衡/ 12
- 最大值(上限)=(餘額×(1 +每月利率)** 12)/ 12.0
的第一個猜測將是(最小+最大值)/ 2我叫guessMinimum這樣:
guessMinimum = (minimum + maximum)/2
所以你開始使用第一猜測(guessMinimum)。一年後你會檢查剩下的。 如果剩餘是負數,則表示您已付出太多。你需要減少每月付款。在其他方面,如果一個月後餘下的是正數(例如,超過您的精度(例如0.10)),您需要減少每月付款,好嗎?!
試圖設計思維.....
+------------------------------------------------+
| /\ /\ /\ |
| \/------------------\/-------------------\/ |
|MINIMUM guess MAXIMUM|
| Minimum |
+------------------------------------------------+
如果一年後,在 「保持」 是(例如)陰性。意思是'guessMinimum'很重要!你需要...不是你,程序!程序需要調整它,降低最小值......
+---------------------------------------------------+
| Got negative 'remain' |
| ++ |
| /\ || /\ /\ |
| \/-------------||---\/-------------------\/ |
| MINIMUM || guess MAXIMUM |
| ++ Minimum-, |
| ', |
| `. |
| `., |
| ', |
| ', |
| `. |
| ` |
| /\ /\ /\ |
| \/------------------\/-------------------\/ |
| MINIMUM guess MAXIMUM |
+---------------------------------------------------+
對不起大家。我試圖插入一個圖像,但作爲一個新成員。我不能。至少需要10個聲望....幫助我!!!!太多的工作使用字符!
和代碼需要爲此努力工作調整了最低,直到「保持」是可以接受的(你的精度,或ε,或任何字母或變量或...好吧內。:)
經瞭解概念和圖紙..讓我們檢查代碼。
balance = 999999;
annualInterestRate = 0.18
monthlyInterestRate = annualInterestRate/12
minimum = balance/12
maximum = (balance * (1 + monthlyInterestRate)**12)/12.0
guessMinimum = (minimum + maximum)/2
remain = balance #if you payed nothin, the remain is the balance!!!!
precision = 0.10 #you choose....
while (remain >= precision):
guessMinimum = (minimum + maximum)/2
for i in range (1,13):
newBalance = remain - guessMinimum
monthInterest = annualInterestRate/12*newBalance
remain = newBalance+monthInterest
# after one month, the CODE need to check about the remain
if (remain < 0): #paying too much.... need to decrease the value
maximum = guessMinimum #remember my beautiful draw above!!
remain = balance # reset the remain to start again!!
elif (remain > precision): #paying less .... need to increase the value
minimum = guessMinimum
remain = balance # reset the remain to start again!!
print "Lowest Payment: %.2f" %(guessMinimum)
就是這樣。
什麼是你的問題? (並且,「[SSCCE] +1(http://SSCCE.org)」)。 – 2013-03-18 19:13:45
您是否嘗試過在循環的每次迭代期間打印出所有變量,並查看其中一個是否未更新?你也從哪裏得到這個算法? – placeybordeaux 2013-03-18 19:31:53
你知道有這樣的公式,對吧? http://en.wikipedia.org/wiki/Compound_interest#Simplified_calculation – 2013-03-18 19:32:42