0
我有以下的運算代碼,我試圖計算所有素數從1到10的因爲遞歸而崩潰的總和。
由於代碼似乎沒有通過我的var i循環,因此我在for和while循環中遇到問題,並且在初始分配(i = 3)時卡住了。
我不是在尋找正確的答案或最有效的答案,但我正在尋找某人來幫助我瞭解什麼是錯的。
下面的代碼:用於加總質數崩潰的Javascript
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);
通過陰影你是否意味着函數中的j是最初引入的j的拷貝並賦值爲0,所以我將在函數的外部保留一個** j = 0 **,該函數仍然分配給0和a函數內部的** j = 0 **?或者是因爲我沒有指定賦值,函數中的j自動分配了0?無論哪種方式,我認爲,因爲我在函數外部分配了初始j,那麼這個j是公共的,並且可以被代碼的任何部分訪問,是不是? – Moolla 2013-02-14 09:32:27
不,「陰影」意味着你不能從函數內部看到外部變量,因爲內部函數更強。沒有隱藏的初始化,內部'j'就是你作爲參數傳入的內容(也可能是外部j的值)或'undefined'。 – Bergi 2013-02-14 09:37:00