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