给N天,每天金额翻倍,这是实现这一目标的最有效方法吗?
第一天:给你$ .5.
第二天:你获得的金额是第一天1美元的两倍,现在你有1.5美元的
第三天:你获得的金额是第二天2美元的两倍,现在你有3.5美元
等等.
function calcit3()
{
var cur_total = .5;
var prev_total = 0;
var days = 20;
for ( z = 1; z < days; z++ )
{
cur_total = cur_total * 2;
prev_total = cur_total;
}
return (cur_total + prev_total);
}
Run Code Online (Sandbox Code Playgroud)
这纯粹是一种流行病.不是真的想要削减周期或任何东西.
谢谢.
编辑:
您提供的代码不符合描述所说的内容.
如果初始金额是a,那么你在第i天获得的金额是a * 2 ^ i
,并且n天之后的金额是从0到n的总和.
简化,我们得到:
a * (2 ^ (n+1) - 1)
Run Code Online (Sandbox Code Playgroud)
不需要循环.
如果我正确地理解了这个问题,它只是一个简单的几何级数,从0.5开始,每天加倍.总数不过n
是这个系列的总和,即:
a * (r^n - 1)
-------------
r - 1
Run Code Online (Sandbox Code Playgroud)
在这里a = 0.5, r = 2
; 替代产生公式:
0.5 * (2^n - 1)
Run Code Online (Sandbox Code Playgroud)
或者等效于JavaScript:
return 0.5 * (Math.pow(2, days) - 1);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
361 次 |
最近记录: |