Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Помогите разобраться (https://javascript.ru/forum/css-html/51152-pomogite-razobratsya.html)

Jcomon 26.10.2014 17:38

Помогите разобраться
 
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.


Часовой пояс GMT +3, время: 03:50.