긍정적 인 매개 변수 num을 취하여 하나의 숫자에 도달 할 때까지 num에서 숫자를 곱해야하는 횟수 인 곱셈 지속성을 반환하는 함수 (지속성)를 작성하려고합니다. 예를 들어 는 :재귀 클로저는 무엇을 반환합니까?
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;}
}
}
이 코드를 실행 볼 수 있듯이, 내부 함수의 반환 값이 예상 정확히되지 않습니다 :
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
나는이 썼다. 실제로 함수는 호출 된 곳으로 돌아와야합니다. 그러나이 경우 반복적이므로 자체에서 호출됩니다. 어떻게
를 참고하시기 바랍니다 : arguments.callee를이 – epascarello