私は肯定的なパラメータnumを取り、その乗法的な持続性を返す関数(永続性)を書いたがっています。これは、数字の1桁に達するまでnumの桁を掛けなければならない回数です。たとえば :再帰的クロージャはどのようなものに戻りますか?
persistence(39) === 3 // because 3*9 = 27, 2*7 = 14, 1*4=4
// and 4 has only one digit
persistence(999) === 4 // because 9*9*9 = 729, 7*2*9 = 126,
// 1*2*6 = 12, and finally 1*2 = 2
persistence(4) === 0 // because 4 is already a one-digit number
私はこれを書いた:あなたはこのコードを実行している見ることができるように
function persistence(num) {
//code me
var f;
f= countPersistence(num);
var toReturn= f(num); console.log("received value: "+toReturn);
return toReturn;
}
function countPersistence(num){
var count=0;
return function g(num){
var numt=num+"";
numt=numt.split("");
if(numt.length>1){
count++;
for(var i=0; i<numt.length-1; i++){
numt[i+1]=numt[i]*numt[i+1];
}
arguments.callee(numt[numt.length-1]);
}
else
{ console.log("returned value: "+count); return count;}
}
}
を、内部関数の戻り値は予想まさにではありません。 実際、関数は呼び出された場所に戻ります。しかし、この場合は再帰的なので、それ自体から呼び出されます。 私は(グローバル変数を使用せずに)実際の値を取得する方法が分からない
:arguments.calleeのは推奨されません.... – epascarello