首页 > 解决方案 > 如何计算每个呈指数增长的数字的总和?

问题描述

我的数学很糟糕(对不起!)我无法计算出适合我的游戏的简单方程式。

在游戏中,我有一个可以无限次购买的物品的价格——每次购买,价格都会上涨。

假设购买该商品的价格为 5 美元。在这里,我会买10次:5+20+45+80+125+180+245+320+405+500 = $1925 买10次的总成本。

我接下来要完成的是提供 Buy x10、Buy x20 等按钮,这将计算出一次购买 10 次的成本。

这是我目前的代码,它将导致上述价格:

    public function CalcuatePrice(timesAlreadyPurchased:Number,timesToBuy:int=1):Number {
        var price:Number;
        var basePrice:Number = 5;
        var multiplier:Number;

        //Always need at least 1 (items actually start at purchased 0 times)
        timesAlreadyPurchased += 1;

        //Apply iterations
        if (timesToBuy!=1){
            multiplier = (timesToBuy * (timesToBuy + timesAlreadyPurchased)) / 2;
        } else {
            multiplier = timesAlreadyPurchased; 
        }

        price = basePrice * multiplier;

        return price;
    }

目前,这仅在 timesToBuy 为 1 时有效。问题在线:

multiplier = (timesToBuy * (timesToBuy + baseMultiplier)) / 2;

我只是不确定使用什么等式来获得“timesToBuy = 10”,当“timesAlreadyPurchased = 0”时返回 1925 美元的值。

另外 - 任何人都知道这种类型的方程在数学中被称为什么?也许是指数级数的总和?谢谢你。

标签: actionscript-3mathactionscript

解决方案


看起来像算术级数。


价格上涨 15、25、35、45 等,所以第 - 次n买入的价格可以表示为递推关系:

在此处输入图像描述

通过替换解决这个问题:

在此处输入图像描述

好简单的表达。最后一步使用了此处的公式。例如n = 3(第 3 次购买)价格5 * 3^2 = 45与预期一致。


要得到总价,当然只需总结这些:

在此处输入图像描述

使用上面链接的同一页面中的另一个公式。

测试 5 次购买:

  • 原来的:5 + 20 + 45 + 80 + 125 = 275
  • 公式:5 / 6 * 5 * 6 * 11 = 275

更新——“伪代码”中的公式:

price = (5.0 / 6.0) * timesToBuy * (timesToBuy + 1) * (2 * timesToBuy + 1);

推荐阅读