在 Code Academy 上遇到了这个 for 循环问题,但无法弄清楚总数是如何达到 23 的。如果有人能帮我解决这个问题,我将不胜感激。
const values = [1, 10, 4, 3, 15, 3, 5, 2];
let total = 100;
for (let i = values.length - 2; i >= 0; i -= 2) {
let a = values[i];
total /= a;
total += 10;
}
console.log(total);
答案 0 :(得分:0)
在阅读此内容时,您可能会遗漏一些内容。首先,您一次递减 2。其次,索引从 0 开始,所以 6 的索引实际上是数组的第 7 个元素。 /=
运算符将值相除并将结果保存在变量中。 +=
运算符添加到值并将结果保存在变量中。只要您了解所有这些要点,您就应该能够自己解决这个问题,我建议您这样做。如果您需要帮助,可以参考以下内容,但我恳请您自己尝试。
最初,i = 6
。
第一次迭代:
i is 6;
values[6] is 5;
total /= 5 is 20;
logs(20);
total += 10 is 30;
第二次迭代:
i is 4;
values[4] is 15;
totals /= 15 is 2;
logs(2);
total += 10 is 12;
第三次迭代:
i is 2;
values[2] is 4;
totals /= 4 is 3;
logs(3);
total += 10 is 13;
最终迭代:
i is 0;
values[0] is 1;
totals /= 1 is 13;
logs(13);
total += 10 is 23;
循环后:
logs(23);
答案 1 :(得分:0)
定义了第一个数组 values
和变量 total
// `const` because it won't change after the initial assignment
const values = [1, 10, 4, 3, 15, 3, 5, 2];
// `let` because it will be changed
let total = 100;
然后创建一个for循环
for (let i = values.length - 2; i >= 0; i -= 2)
由三部分组成 -
let i = values.length - 2
- 在 for 循环开始时只运行一次的初始步骤
i
values
数组的长度减去 2i >= 0
- 条件 - 在每次迭代之间检查什么,如果它是假的,循环结束。这里检查 i
是否小于或等于零。i -= 2
- 这是它在每次迭代后所做的 - 这里它使 i
的值下降 2(使用 -=
运算符,其作用与 {{1} })在每次迭代时,局部变量 i = i - 2
都会被分配到 a
数组内当前 i
的索引上的任何值。
values
然后将 total 分配给它的值除以 // if `i` would be 2 in this iteration then `a` would be assigned 4
// because it counts from 0
let a = values[i];
,然后记录
a
最后 // same as `total = total / a`
total /= a;
被分配了一个新的值 + 10。
total
我们一起经历第一次迭代
total += 10;
现在自己尝试这个迭代直到循环结束
有关更多信息,请参阅这些资源
答案 2 :(得分:0)
你开始循环 i=6 原因 values.length 是 8
你循环直到 i>=0 在每个循环中将 i 减 2
所以每个循环中的 a
值将相应地是值的第 7、5、3 和第一个元素,所以:5, 15, 4, 1
因此,每个循环中完成的数学运算如下:
100 / 5 + 10 = 30
30 / 15 + 10 = 12
12 / 4 + 10 = 13
13 / 1 + 10 = 23