首先,如果你正在做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