提问人:Mỹ Trần 提问时间:8/13/2023 最后编辑:MureinikMỹ Trần 更新时间:8/13/2023 访问量:30
While 循环条件与 if 语句
While Loop condition with an if statement
问:
问题:定义一个函数 fizzBuzz(max),该函数接受一个数字并打印从 0 到 max(不包括)的每个数字,该数字可被 3 整除。
对于上面的问题,我不确定为什么当我使用下面的循环时它不起作用,但我需要添加另一个条件语句。while
if
不起作用
let i=0;
while (i<max && i%3===0) {
console.log (i);
i++;
}
工程
let i=0;
while (i<max) {
if (i%3===0) {
console.log (i);
}
i++;
}
答:
1赞
Mureinik
8/13/2023
#1
您提供的两个代码段并不等同。一旦不满足循环的条件,循环就会终止。因此,在第一个片段中,打印出来后,循环的条件将计算 ,找到条件为 (since is , not ),并终止循环。在第二个片段中,循环继续迭代,直到等于 ,并且其中的条件负责确定是否需要打印。while
0
1
false
1%3
1
0
i
max
if
i
旁注 #1:既然你知道是可以被整除的,你可以逐步递增,只得到所有可整除的数字,而不是检查中间的所有数字:0
3
3
3
let i = 0;
while (i < max) {
console.log (i);
i += 3;
}
旁注 #2:这可能是一个风格问题,但由于循环主体对条件的唯一影响是固定增量,因此循环感觉更合适,至少对我来说是这样:i
for
for (let i = 0; i < max; i += 3) {
console.log(i);
}
0赞
Alexander Nenashev
8/13/2023
#2
您的循环不起作用,因为它在 since 和 is 时中断。i === 1
1%3 !== 0
i<max && i%3===0
false
第二个代码片段解决了这个问题。
还有一个选项是使用函数式的单行代码并生成一个假数组并打印其索引乘以:3
const max = 40;
Array.from({length: Math.ceil(max / 3)}, (_, i) => console.log(i * 3));
评论
FizzBuzz
while
if
if
while