搜索公式以替换循环

时间:2014-06-22 17:14:23

标签: javascript math recurrence

有一个简单的公式可以计算出来吗?

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.是否有一个简单的公式我可以用来计算这而不是做一个循环?

1 个答案:

答案 0 :(得分:1)

总是可以向Wolfram Alpha提出这样的问题:

  

price(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改变后:

  

price(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

     

答案:是的