请教一个砍价算法

问题描述

请教大神一个砍价算法,比如原价1000元,底价10元,一共能砍10次.
每次能砍到"可砍价格"的一半左右,或者可以设置前5次能砍到一半;
然后把10次砍价的结果全部生成出来

你期待的结果是什么?实际看到的错误信息又是什么?

把结果全部生成出来保存为数组,方便以后直接调用

阅读 4.1k
3 个回答

已经弄好了,下面是代码

/*基本思想,在第一个人点击的时候就执行函数,生成随机金额数组,
等于之后每个人金额其实早就已经默认确定.然后依次点击时展示对应金额即可*/
function Divide(people, totalMoney, maxMoney, minMoney) {
    /*人数,总金额,单人上限,单人下限*/
    var arr = [];
    let ntotalMoney = totalMoney * 100; /*金额都扩大100倍,方便计算*/
    let nmaxMoney = maxMoney * 100; /*金额都扩大100倍,方便计算*/
    let nminMoney = minMoney * 100; /*金额都扩大100倍,方便计算*/
    let i
    for (i = 0; i < people - 1; i++) {
        /*每个人的随机金额,单人最小金额到最大金额之前*/
        arr[i] = Math.ceil(nminMoney + Math.random() * (nmaxMoney - nminMoney));
        ntotalMoney -= arr[i];
    }
    /*最后一个人*/
    arr[people - 1] = ntotalMoney;
    /*最后一个人如超过上限或者低于下限,就重新分。 
    这里要注意分配的合理性,如果下限的值都大于上限值,自然无法分配*/
    if (arr[people - 1] > nmaxMoney || arr[people - 1] < nminMoney) {
        return Divide(people, totalMoney, maxMoney, minMoney);
    }
    return arr.map(function(v) {
        return v = v / 100; /*除以100返回正确金额数组*/
    });
}
console.log(Divide(10, 40, 8, 2));

这种基础数学题都要在线求算法吗? 应该自己多学习了

太基本了,考虑好这个逻辑,一点点写出来吧,没有捷径可以走

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题