gpt4 book ai didi

javascript - 在 Javascript 中对范围内的每个元素求和

转载 作者:行者123 更新时间:2023-11-29 10:58:10 26 4
gpt4 key购买 nike

我正在尝试让我的小函数工作,它将一个范围内的每个数字加在一起。

例如,当我调用如下方法时:sumAll(3,10) 它应该这样做3+4+5+6+7+8+9+10

如果我给函数正整数它会工作但是如果它接收一个负数或一个字符串或一个数组,它就不能正常工作。如果提供的参数不是,我只想返回“ERROR”一个正整数。

请问我可以帮忙吗?有没有更优雅(更好)的方式?

我的代码:

const sumAll = (...args) => {
let max = Math.max(...args);
let min = Math.min(...args);

if ((min < 0) || (!Number.isInteger(min)) || (!Number.isInteger(max)) || (Array.isArray(...args))) {
return "ERROR";
}

let n = (max - min) + 1;

return ((max + min) * n) / 2;
}

最佳答案

您可以使用高斯公式从 1 ... n 中获取计数并减去子计数。

为了尽可能只获得一个结果,您可以添加对正整数的检查。

const
isPositiveInt = v => Number.isInteger(v) && v > 0,
sumN = n => n * (n + 1) / 2,
range = (m, n) => isPositiveInt(m) && isPositiveInt(n)
? sumN(Math.max(m, n)) - sumN(Math.min(m, n) - 1)
: 'ERROR';

console.log(range(3, 10));
console.log(range(10, 3));
console.log(range());
console.log(range(3));
console.log(range('', 10));
console.log(range(0.2, 0.3));

关于javascript - 在 Javascript 中对范围内的每个元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52913565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com