每5个for循环计数

时间:2019-11-02 23:24:42

标签: javascript loops for-loop

我在这里遇到这个问题很困难:

  

编写一个名为sumEvery5th的函数,该函数接受一个非负整数n并返回从1到5可以被5整除的整数之和,包括n本身。使用n循环。

这是我到目前为止所拥有的:

for

我觉得我真的很近。感谢您的提前帮助。

3 个答案:

答案 0 :(得分:3)

您可以在5处开始循环,因为1、2 ...不能被5整除。您可以直接将5除以5,直到{{1} }大于i++

i

答案 1 :(得分:2)

首先,我认为您应该了解for循环的工作原理。

var sumEvery5th = function(n){
    let sum = 0;
    for(let i = 1; n % 5 == 0; i++){
        sum+ i
    };
    return sum;
}

您正在逐步执行的操作是:

  1. 声明值为{1的变量i
  2. n除以5,然后取余数并将其与0进行比较。如果是真的,您将跳过for内的代码块并移向return sum;行。
  3. (如果您没有在步骤2中跳过代码块,请使用新的i值运行代码块。
  4. (如果您没有在步骤2中跳过代码块,请递增i值。
  5. 返回步骤2。

通常,您的for条件将取决于步骤1中声明的变量。要执行的操作是for代码块运行n次。 为此,您需要将条件从n % 5 == 0更改为i <= n。这将确保在i小于或等于n的情况下运行代码块,并从1开始。

现在,在代码块内添加divisible by 5逻辑,并检查i的值。

for(let i = 1; i <= n; i++){
    if (i%5 == 0) sum += i;
};

现在假设我叫sumEvery5th(5)。

  1. 声明一个值为1的变量i。
  2. 检查i(1)是否小于或等于n(5)。
  3. 进入代码块。
  4. 检查i%5是否为0。
  5. 不是。
  6. 增加i,现在i = 2。
  7. 检查i(2)是否小于或等于n(5)。 ...依此类推,直到i = 6,在这种情况下,代码块将被跳过,程序将继续其运行。

Ps .:有多种方法可以改善此算法的性能,但是现在您对for循环有了更好的了解,我将它留给您:)

答案 2 :(得分:0)

var sumEvery5th = function(n){

    let sum = 0;
    for(let i = 1; i <= n; i++){
        if (i % 5 === 0) {
            sum += i;
        }
    }
    return sum;
}