如何使用JavaScript查找1和N之间的所有数字的总和
How to find the sum of all numbers between 1 and N using JavaScript
我正试图找到一种使用JavaScript计算1到N之间所有数字之和的方法。以下是我迄今为止尝试过的代码,但似乎不起作用。
function numberSum(N) {
var total = 0;
for(var i = 1; i <= N; i++){
total += i;
}
return total;
}
我试着在网上使用jslint和其他验证器来检查我是否遗漏了什么,但这似乎也不能帮助我找到代码不工作的原因。上面有没有我遗漏的东西阻止了脚本执行添加??
您的代码很好。
保持简单:
var res = (n * (n+1)) / 2;
Wiki。
您的代码运行良好。你是怎么运作的?
演示:
function numberSum(N) {
var total = 0;
for(var i = 1; i <= N; i++){
total += i;
}
return total;
}
function run(){
val = document.getElementById("val").value;
document.getElementById("results").innerHTML=val+": "+numberSum(val)
}
<input id="val">
<input type="Submit" onclick="run();">
<p id="results"></p>
我知道这个问题已经解决了,但我想发布一个我在阅读完这个帖子后写的ES6 oneliner,并为其他像我一样没有扎实数学背景的人更彻底地解释它。
const numSum = (n) => n * (n+1) / 2;
它之所以有效,是因为它使用了卡尔·弗里德里希·高斯提出的数学公式。(这张照片很棒)。
基本上,每当你把n个数字的和相加时,序列中就会有对。所以高斯发现,你不需要循环遍历每对,然后把它们相加,相反,你只需要把中间的一对相加,然后把这个和乘以对的总数。这对编程来说非常有效,因为它们不会循环通过每个数字,而在编程中,这些数字会消耗掉你的资源。
你可以通过除以n/2来找到对的数量,它也给了你中间的数字,然后你只需要加1就可以找到它的对。
假设你得到1-100的和,通过应用高斯方法,你会想要50(101)=5050。50是对的数量,在代码中,它由n *
表示,101是中间对(50+51)的加法,或者在代码(n+1)
中,最后我们除以2作为中间数。
function SimpleAdding(num) {
place = 1;
i = num;
do {place = place += i; i--}
while (i > 1);
return place;
}
您将占位符变量设置为等于1。您还可以将迭代次数设置为等于输入变量。
do循环然后添加带有"i"的占位符变量,然后当它不再大于1时循环退出,这是正确的,因为占位符等于1。
可以使用递归进行计算
var numberSum = (n, a = n) => n ? numberSum(n = n - 1 , a = a + n) : a
我使用while循环,我认为这更容易
function numberSum(S){
var a=1;
var sum=0;
while(a<=S){
sum+=a++;
}
return(sum);
}
function go(){
val = document.getElementById("value").value;
document.getElementById("results").innerHTML=val+":"+numberSum(val)
}
<input id="value">
<input type="Submit" onclick="go();">
<p id="results"></p>
以下代码将以一种简单的方式对有所帮助
let n = parseInt(readLine());
let sum = n*(n+1)/2;
console.log(sum);
function numSum(n){
var sum = 0;
for(i = 0; i <= n; i++){
sum += i;
}
console.log(sum)
}
numSum(15);
更通用的递归答案。
const sumRange = (min, max) => min !== max
? sumRange(min, max - 1) + max
: 0
虽然这可能不是min:0max:n情况下的最佳答案,但它可能是最容易阅读和理解的。
- 删除图形和数字之间的连字符(-)符号
- 计算HTML表TD中两个数字之间的百分比
- 通过变量在两个数字之间切换
- 如何创建一个确定2个数字之间值的函数
- 在 javascript 中,将数字之间出现的所有“-”替换为“:”
- Jquery if 在 2 个数字之间
- 如何在javascript中生成任意四个数字之间的随机数
- 验证javascript中的输入是否在2个数字之间
- 如何使除法符号在基本计算器的数字之间只出现一次
- 检查数字是否在两个数字之间
- 数字数组,检查当前值介于哪 2 个数字之间
- 字符串和数字之间的Javascript比较
- 我想创建一个从 50 到 1 的倒计时,但我不想在每个数字之间倒计时相同的时间量
- 如果数字在两个数字之间加/减 10 添加类
- Javascript - 求两个数字之间的距离
- 2 个数字之间的 Javascript 表单验证
- 如何使用javascript在两个数字之间随机决定
- 如何在谷歌地图上获取性别数字,并计算两个性别数字之间的距离
- 验证文本字段长度在2个数字之间
- 使用或不使用变量的数字之间的差异