如何解决Javascript-如何编写可在任何数字参数集中找到最大数量的函数
我正在完成关于JavaScript Hero(https://www.jshero.net/en/success.html)的练习,并且能够使用该函数,但是,我希望有人可以告诉我为什么它可以工作。我真的很感激。
挑战是... “编写一个函数max,该函数计算任意数量的数字的最大值。 示例:max(1,2)应该返回2,max(2,3,1)应该返回3。“
我的回答是...
function max (){
let ans=0;
for (let i = 0; i < arguments.length; i++) {
if (arguments[i] > ans){
ans= arguments[i];
}
}
return ans;
}
我不明白的是将ans设置为零,然后说是否arguments [i]大于零,那就是答案。从理论上讲,是否会返回第一个超过零的参数作为答案?另外,如果您传入的参数是负数,例如(-1,-5,-15),该怎么办?那么该功能不起作用吗?
我真的很感激对此的任何投入。即使我得到了正确的答案,我也想了解代码中发生了什么。谢谢! :)
解决方法
您可以将第一个参数作为局部最大值,然后从第二个参数进行迭代。
function max() {
let ans = arguments[0];
for (let i = 1; i < arguments.length; i++) {
if (arguments[i] > ans) {
ans = arguments[i];
}
}
return ans;
}
console.log(max());
console.log(max(3,2,1));
,
看起来ans
最初只是0。 ans
的值在每次比较时都会改变。
因此,假设您将数组[1,5,4]
传递给max
函数,这就是它的过程:
- 1是否大于0?是的,因此
ans
变为1。 - 2大于1吗?是的,因此
ans
变为2。 - 5比2大吗?是的,因此
ans
变为5。 - 4比5大吗?不,因此
ans
保持5,并以最大的数字返回给用户。
逻辑是一次比较两个数字以确定哪个数字更大。 您提供的代码仅在参数中的所有数字均为正整数时才有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。