2014-06-22 42 views
-1

有没有一个简单的公式来计算这个?正在寻找一个公式来代替循环

var quantity = 10 
var starting_price = 10 

var cost = 0 
var price = starting_price 
for (var n=1; n<=quantity; n++) { 
    cost += price 
    price += price * 0.01 
} 

console.log('final price: '+price) 
console.log('total cost: '+cost) 

所以1将耗资10,2将耗资20.1,3将花费30.3,4将花费40.6,5将耗资51是否有一个简单的公式,我可以用它来计算这个,而不是做一个循环?

+0

计算什么?你的计算是基于循环递增变量? – tymeJV

+0

更新了问题以便更有意义。 – Dan

回答

1

这种问题可以总是被要求Wolfram Alpha的:

对于价(n)的

问题:f(0) = 10, f(n) = f(n-1) + f(n-1) * 0.01

答案:F(N)= 10 ^(1 -2N)101^N

对于成本(n)的

问题:g(n) =10^(1-2n) 101^n, f(0) = 0, f(n) = f(n-1) + g(n-1)

答案:F(N)= 10 ^(3-2n)101^N - 1000

翻译为JavaScript:

function price(n) { 
    return Math.pow(10, 1 - 2*n) * Math.pow(101, n); 
} 

function cost(n) { 
    return Math.pow(10, 3 - 2*n) * Math.pow(101, n) - 1000; 
} 

这样的公式的名称是recurrence equation,你学会了它,例如在你的第一学期作为CS大学生。解决一些例子后,“手动”很容易做到。


OP的变化后:

对于价(n)的

问题:f(0) = c, f(n) = f(n-1) + f(n-1) * d

答案:F(N)= C *(d + 1)^n其中c = 10,d = 0.01

对于成本(n)的

问题:g(n) =c (d+1)^n, f(0) = 0, f(n) = f(n-1) + g(n-1)

答案:F(N)= C/d((d + 1)^ N - 1)

要查看两个结果都是一样的:

问:c/d ((d+1)^n - 1) = 10^(3-2n) 101^n - 1000 where c = 10, d = 0.01

回答:真

+0

谢谢!但是,如果起始价格变化,公式看起来会改变。我更新了我的问题,以便更有意义。 – Dan

+0

你没有看看Wolfram Alpha,是吗?我更新了我的答案。 – kay