JavaScript编码挑战1

很长一段时间以来,我一直想做些事情,那就是开始写具有随机编码挑战的博客文章,以及我在JavaScript中针对它们的解决方案。

我之所以使用JavaScript,是因为它是当今最常用的编程语言之一,这是第一个原因。 第二个原因是,我发现与work一起工作真的很有趣,而且这是我最了解的一个,所以…但是不用担心,如果您没有使用它,我将逐步解释整个过程。以及解决挑战的思路。

请注意,我并不声称拥有最佳解决方案。 我很高兴看到挑战的其他解决方案。

好的,聊天就够了……让我们动手吧。 我们将从一个简单的问题开始,并逐步发展。

问题来自:https://projecteuler.net/。 对于那些感兴趣的人:

欧拉计划(Project Euler) 是一系列具有挑战性的数学/计算机编程问题,不仅需要数学方面的知识来解决,还需要更多。 尽管数学将帮助您找到优雅而有效的方法,但仍需要使用计算机和编程技能来解决大多数问题。

3和5的倍数

如果我们列出所有低于10的自然数,它们是3或5的倍数,则得到3、5、6和9。这些倍数的总和为23。

找出1000以下3或5的所有倍数的sum

太好了!听起来很有趣! 让我们开始吧。

首先,我们需要一个变量来存储总和。 我们将其初始化为0

 令总和= 0; 

现在…我们需要一种方法来循环遍历从1到999的所有数字,因为我们需要所有1000 below数字。for循环可以解决这个问题:

 令总和= 0; 
  for(让i = 1; i <1000; i ++){ 
  } 

要仅获取3或5的倍数的数字,我们将使用if语句:

 令总和= 0; 
  for(让i = 1; i <1000; i ++){ 
if(i%3 === 0 || i%5 === 0){
  } 
}

%模运算符将为我们提供除法的余数。 例如,如果我们将4除以3则余数为1 ,而对于6 / 3 ,余数为0 ,这正是我们所需要的…所有可以被3或5均分的数字,因此它们的余数为0

如果是这种情况,我们只需将i加到sum

 令总和= 0; 
  for(让i = 1; i <1000; i ++){ 
if(i%3 === 0 || i%5 === 0){
和+ = i;
}
}

对于那些不知道的人, sum += isum = sum + i的简写。

就这样! 在for循环之后,我们的sum变量将保存问题的答案,即…………我将让您运行代码并在注释中告诉答案!

更进一步…

凉! 现在,我们有一些代码可以为我们提供从1到999的所有被3或5整除的数字的和。

但是,让我们更进一步,创建一个将数字作为参数的函数,该函数将返回该数字以下所有被3或5整除的数字的总和。 😀走吧!

我们将调用函数sumOfMultiples并将其粘贴到上面的代码中。 我们还将添加一个参数:

 函数sumOfMultiples(number){ 
令总和= 0;
  for(让i = 1; i <1000; i ++){ 
if(i%3 === 0 || i%5 === 0){
和+ = i;
}
}
}

太棒了! 但是有一个问题……我们需要从1循环到number minus one (因为我们需要使所有数字都低于我们的数字),但是我们当前从1循环到999 ……那是错误的……另外,我们想返回函数末尾的sum 。 让我们这样做:

 函数sumOfMultiples(number){ 
令总和= 0;
  for(让i = 1; i <number; i ++){ 
if(i%3 === 0 || i%5 === 0){
和+ = i;
}
}
 返回总和 
}

现在我们可以调用该函数并传递任何数字。 它将返回正确的答案:

  sumOfMultiples(10);  //返回23为3 + 5 + 6 + 9 = 23 
  sumOfMultiples(15);  //返回45为3 + 5 + 6 + 9 + 10 + 12 = 45 

欢呼! 我们做到了!

结论

我知道这个问题对于某些人来说似乎是微不足道的,但是如果它以任何方式对您有帮助,我对此感到非常高兴!

另外……对于那些有兴趣的人,可以采取进一步的措施:

如果您还可以将另外2个参数传递给该函数,以替换if语句中的3和5,该怎么办? 这样,您可以给它另外两个数字。

一个更有趣的挑战是能够传递一个数字数组,而不是仅传递2个数字,并计算可被该数组中的数字平均整除的所有数字的总和。 为此,您将需要另一个for循环。 很高兴看到您针对该问题的解决方案!

非常感谢您的耐心配合。 我很想听听您对这篇文章的反馈。

另外,在这里您可以找到本文的后续文章,在这篇文章中我们以不同的方式解决了算法。

编码愉快! ^ _ ^

如果您喜欢我的帖子,我将不胜感激,点击“ 推荐”按钮 。 💚