使用while循环实现指定倍数输出时遭遇无限循环问题求助
问题排查:无限循环问题分析
你的代码出现无限循环的核心原因是:当i等于param4时,执行了continue语句,直接跳过了循环体中后续的i++代码。这会导致i的值永远停留在param4,无法满足循环退出条件i <= param3,从而陷入无限循环。
以示例输入(3,5,17,9)为例,当i走到9时,触发if (i == param4)条件,执行continue,跳过了i++,所以i一直是9,循环永远不会结束。
修正后的代码
有两种常见的修正方式:
方式一:在continue前先递增i
function finalCount(param1, param2, param3, param4) { var i = param2; while (i <= param3) { if (i == param4) { i++; // 先递增再跳过后续逻辑 continue; } else if (i % param1 == 0) { console.log(i); } i++; } } finalCount(3, 5, 17, 9)
方式二:调整逻辑,避免使用continue
function finalCount(param1, param2, param3, param4) { var i = param2; while (i <= param3) { if (i !== param4 && i % param1 == 0) { console.log(i); } i++; } } finalCount(3, 5, 17, 9)
两种方式都能解决无限循环问题,并且符合题目要求输出6、12、15。
内容的提问来源于stack exchange,提问作者ErionG14
相关产品推荐
相关产品推荐

