为何while循环条件含整除判断失效,需嵌套if语句?
为什么while循环的条件写法无法实现FizzBuzz需求?
需求:定义一个函数fizzBuzz(max),接收一个数字参数,打印0到max(不包含max)之间所有能被3整除的数字。
下面两种while循环写法,一种无效一种有效,核心区别如下:
无效写法
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++; }
问题根源
- 无效写法的循环条件同时绑定了
i < max和i%3===0:初始i=0满足条件,打印后i自增为1,此时i%3===0不成立,循环直接终止,只会输出0,完全无法遍历后续数字。 - 有效写法的循环条件只保留
i < max,确保遍历0到max-1的所有数字,再通过内部if判断筛选出能被3整除的数打印,这样就能覆盖所有符合要求的数字。
内容的提问来源于stack exchange,提问作者Mỹ Trần
相关产品推荐
相关产品推荐

