JavaScript-此硬币找零算法怎么了
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript-此硬币找零算法怎么了,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1584字,纯文字阅读大概需要3分钟。
内容图文
![JavaScript-此硬币找零算法怎么了](/upload/InfoBanner/zyjiaocheng/683/609dd064b57840cf88c543893d18194f.jpg)
我正在尝试使用贪婪算法来计算在JavaScript中达到一定数量所需的最小硬币数量
返回结果将是一个数组,其中包含每个级别的硬币数量
我决定创建一个可以解决此问题的函数,但是它不起作用
window.addEventListener('load', function(e) {
function calculateChange(coins, total) {
var sum = 0;
var dispatched = [];
for (var i = 0; i < coins.length;i++) {
dispatched[c] = 0;
}
while (sum < total) {
for (var c = 0; c < coins.length; c++) {
while (total - sum >= coins[c]) {
total += coins[c];
dispatched[c]++;
}
}
}
return dispatched;
}
alert(calculateChange([50,25,10,5,1],137));
}, false);
computeChange函数接受两个参数,硬币值数组和金额.
第一步将是初始化一个sum变量,该变量显示已分派的更改量.我还将创建一个数组变量,该变量将保存分配某种硬币的次数.
为此,我将遍历coins数组并将所有值设置为0.如果我不知道其他硬币值的数量,这很重要
接下来,我想到了要检查条件是否达到金额的条件
如果还没有,我将开始一个for循环,迭代所有硬币值.至于贪婪算法,随着索引的增加,硬币价值会降低.这是为了使用尽可能少的硬币
为防止跳下硬币层次结构,此for循环内嵌套有一个while循环.这个while循环将检查是否仍然可以使用最大的硬币.
如果不满足循环条件,则while循环将结束. for循环将通过增加索引继续.我们将移至下一个较低级别的硬币.该过程将重复
我期望的输出是这样
[2,1,1,0,2]
这意味着2个50秒,1个季度,1个角钱和2个便士
在此函数中,这应该表示派遣的值,即返回值.运行上面的代码,我没有得到返回值
我唯一可以得到的解释是我使用了错误的循环.即使检查也看不到
我在这里想念什么.深入了解
解决方法:
显然,变量sum初始化为0且从不更新,因此循环
while (sum < total)
将随着总数量的增加而永远运行,但从未减少.也许您想更新总数而不是总数.我猜您混合了sum(显然是所选硬币已经覆盖的值)和total(这是函数的参数)的语义.
内容总结
以上是互联网集市为您收集整理的JavaScript-此硬币找零算法怎么了全部内容,希望文章能够帮你解决JavaScript-此硬币找零算法怎么了所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。