数値の素因数分解を見つける Web ページを作成しています。私が使用する関数は、ループ内からそれ自体を呼び出します。関数内で関数を実行した後、ループのインデックスは、2 回目の呼び出しで到達したインデックスから変更されます。配列内のすべての素因数を返す必要があります。これがコードです。
function pf(num){
max=Math.floor(Math.sqrt(number));
factors=[];
prime=true;
for(count=2;count<=max;count++){
ratio=num/count;
if(ratio%1==0){
alert(count);//HERE
factors=pf(ratio);
alert(count);//HERE
factors.push(count);
prime=false;
break;
}
}
if(prime){
factors.push(num);
}
return factors;
}
このコードが 20 の入力で実行されるとします。最初のアラートでは数値 2 が表示されますが、次のアラートでは 3 が表示されます。関数の 2 回目の呼び出しによってループの現在のインデックスが変更されないようにする方法はありますか?