Помогите разобраться
sd='';
function factorial(n) {
alert ('s1='+n);
if(isFinite(n)&&n>0&&n==Math.round(n)){
if(!(n in factorial)) {
alert ('s2='+n);
factorial[n]=n*factorial(n-1);
alert ('s3='+n);
}
alert ('s4='+n);
sd+='|'+n+'='+factorial[n];
return factorial[n];
}
else return NaN;
}
factorial[1]=1;
alert (factorial(4)+'='+sd);
Срабатывают alert-ы s1 и s2 на 4,3,2,1 и почему после этого не
выходит из функции на return factorial[n], а переходит на
срабатывание alert-ов s3 и s4 с результатом 1,2,3,4 и тогда
завершается работа функции с общим результатом 24.
|