正在寻找替换循环的公式

Searching for a formula to replace loop

本文关键字:循环 替换 寻找      更新时间:2023-09-26

是否有一个简单的公式来计算这个?

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。有没有一个简单的公式可以代替循环来计算这个?

这样的问题可以随时问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 ^ 101 ^ n (1-2n), 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;
}

这样一个公式的名字是递归方程,你学过它,例如在你的第一学期作为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 c = 10 d = 0.01

答:真正的