我需要编写一个函数来计算网站中某些选定项目的虚构价值。
这些是仅存在的4个折扣,但它们可以累积,因此如果用户选择110(80 + 24 + 6),则该值应为(50 + 20 + 6)。让我们看看其他一些例子:
我希望自己解释一下。我猜我需要使用mod逻辑运算符,但我不知道如何开始编写这个算法,我想我需要一些帮助。
答案 0 :(得分:2)
Javascript不是我常用的编程语言,但是这样的东西应该可行。
这个想法是每次都应用最优惠的折扣。要知道您可以申请折扣的次数,您只需要取出剩余购买物品与应用折扣所需物品之间的分数的商,即如果您有17个物品且需要应用折扣8,17 / 8 = 2,剩下1项。然后,一旦您知道应用折扣的次数,就减去这些项目并继续。
function calculate_price(total_items) {
var needed = [1, 8, 24, 40, 80];
var price = [1, 7, 20, 30, 50];
var total = 0;
for (var i = needed.length - 1; i >= 0; --i) {
var qtt = Math.floor(total_items/needed[i]);
total_items -= qtt*needed[i];
total += qtt*price[i];
}
return total;
}
答案 1 :(得分:0)
这是一些让你入门的伪代码:
remainder = initial value
total = 0
array of discount objects ordered descending by discount i.e. [{ level: 80, amount: 50 }, { level: 40, amount: 30 }, etc.]
loop over array doing the following calculation:
get total number of discounts to apply at this level (divide remainder by current level and round down)
add total number of discounts times the current level's amount to the total value
set remainder to what's left (current remainder mod current level)
add the remainder after the loop has run to the total calculated so far