小王有一台很旧的车,大概值2000块钱,而且很容易出手。
他看中了一台价值8000块的二手车,想在存够钱后买下它。
他估摸着每个月能存1000块钱。
他现在的车和那台二手车,每个月都会降价,最开始是降1%,然后每隔两个月,降价幅度都会增加0.5%。
比如,第一个月会降价1%,第二个月就降了1.5%,第三个月就还是降了1.5%,第四个月是2%。
换句话说,逢单月降价幅度和前一个月一样,逢双月,降价幅度比前一个月加0.5%。
你能帮帮他吗?
他至少得存多少个月的钱才能买下这部二手车?那时他买车后还可以剩下多少钱?
函数原型如下:
nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth)
分别对应:旧车价格,二手车价格,每月存款定额,第一个月降幅
例子:
nbMonths(12000, 8000, 1000, 1.5) // [0, 4000]
这种情况,旧车比二手车价值还高些,那还用等啥?直接买呗!还能赚个4000块!
nbMonths(8000, 8000, 1000, 1.5) // [0, 0]
这种情况,直接以旧换新,两两相抵了。
nbMonths(2000, 8000, 1000, 1.5) // [6, 766]
这种情况,得花上6个月,最后结余还剩766.158...等一串小数,四舍五入得766块。
这道题目,很简单的加减乘除,但诸位不要想太多了,比如存银行吃利息这样的主意~
好了,直接上代码了:
function nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth){ percentLossByMonth /= 100; var months = 1; var percentLossIncrement = 0.005; var alreadyHaveMoney = 0; while(startPriceOld + alreadyHaveMoney < startPriceNew){ if(months % 2 === 0){ percentLossByMonth += percentLossIncrement; } startPriceOld *= (1 - percentLossByMonth); startPriceNew *= (1 - percentLossByMonth); alreadyHaveMoney += savingperMonth; months++; } return [months-1,Math.round(startPriceOld + alreadyHaveMoney - startPriceNew)]; }
以上就是 JavaScript趣题:买车子的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!