Javascript 对素数求和崩溃

标签 javascript recursion for-loop while-loop primes

我有以下练习代码,我试图计算 1-10 中所有素数的总和,但由于递归而崩溃。
我的 for 和 while 循环遇到问题,因为代码似乎没有循环遍历我的 var i,并且卡在 i = 3 的初始分配上强>.
我还不是在寻找正确的答案或最有效的答案,但我正在寻找有人帮助我了解问题所在。
代码如下:

var array = [2];
var total = 0; 
var j = 0;
function isPrime(i, j) {
if ( i%array[j] === 0 ) {
        console.log("i was " + i + " and j was " + j);
        console.log(i + " is not a prime");
        j = array.length;
    }
    else if ((j + 1) === array.length) {
        console.log(i + " is a prime");
        total += i;
        console.log("total so far is " + total);
        array.push(i);
        console.log(array);
        j = array.length;
        console.log(j);
    }
    else {
        j++;
        isPrime(i,j);
    }
}

for(var i = 3; i <=10; i++) {
   while(j < array.length) {
       console.log("i is " + i + " and j is " +j);
       isPrime(i, j);
   }
}

console.log(total);
console.log(array);  

最佳答案

var j = 0;
function isPrime(i, j) { …

意味着你有两个不同的 j变量:一个在函数外部,一个在函数内部影响另一个变量。从内部你永远无法分配或读取外部变量。因此,外j停留0永远和while (j < array.length)将无限循环。

关于Javascript 对素数求和崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870940/

相关文章:

javascript - jQuery 和 IE 中的内存泄漏

java - 八皇后拼图逻辑错误

java - 使用递归从列表中获取所有组合,包括使用相同数字的组合

c - 在c中递归查找数组的第三大元素

java - 在 Java 中从 ArrayList 中删除所有项目的最佳实践

javascript - 拖放分离和 append 克隆

javascript - 函数 Name() 与不带括号的函数名称之间的区别?

javascript - 我无法让 Canvas 填充矩形

Python:for 循环和 xrange()

r - 为整个数据集和计数在 R 中自动化 "for loop"