我有一个我正在开发的程序,但需要一些帮助。我让用户输入最小数量和最大数量。我有一个for循环,它将遍历数字范围并显示在屏幕上。我还需要找到每个数字的因子。我在for循环中有一个while循环,但是我得到一个"分配大小溢出"错误。
这是我到目前为止所做的:
function getFactors(lowNum, highNum){
var result = "Finding all factors of numbers between "
+ lowNum + " and " + highNum + "<br /><br />";
for (var x=lowNum; x <= highNum; x++) {
result += "<b>" + x + ":</b>";
//for loop to loop through the terms
var factor=2;
while(factor <= lowNum){
if (lowNum % factor == 0){
result += factor + ", <br />";
}
lowNum++;
}
}
return result;
}
getFactors(2, 10);
答案 0 :(得分:3)
在你的while循环中,你正在递增lowNum
而不是factor
,所以循环将永远运行。更改此功能时,它可在我的浏览器中使用请注意,以免用户输入太多数字,浏览器崩溃/冻结。
你的逻辑也有点不对,因为你在while循环中使用lowNum而不是x。在您的代码中,您基本上不使用x。
这是你的while循环编辑,所以它的工作方式如下:
while(factor <= x){
if (x % factor == 0){
result += factor + ", <br />";
}
factor ++;
}
答案 1 :(得分:1)
除了Izzey的回答:您在x
和lowNum
之间的highNum
的所有值都运行完全相同的代码。您应该在x
循环中使用lowNum
而不是while
。