用于总结素数崩溃的Javascript

时间:2013-02-14 08:51:58

标签: 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);  

1 个答案:

答案 0 :(得分:3)

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

表示您有两个不同的j变量:一个在函数外部,一个在内部影响另一个。从内部你永远不能分配或读取外部变量。因此,外j永久保留0while (j < array.length)将无限循环。