РозÑÐ°Ñ ÑваÑи ÑакÑоÑÑал
ФакÑоÑÑал з наÑÑÑалÑного ÑиÑла â Ñе ÑиÑло, помножене на "ÑиÑло мÑнÑÑ Ð¾Ð´Ð¸Ð½", поÑÑм на "ÑиÑло мÑнÑÑ Ð´Ð²Ð°" Ñ Ñак до 1. ФакÑоÑÑал n познаÑаÑÑÑÑÑ Ñк n!
Ðи можемо напиÑаÑи визнаÑÐµÐ½Ð½Ñ ÑакÑоÑÑÐ°Ð»Ñ Ð½Ð°ÑÑÑпним Ñином:
n! = n * (n - 1) * (n - 2) * ...*1
ÐнаÑÐµÐ½Ð½Ñ ÑакÑоÑÑалÑв Ð´Ð»Ñ ÑÑзниÑ
n:
1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
5! = 5 * 4 * 3 * 2 * 1 = 120
ÐÐ°Ð²Ð´Ð°Ð½Ð½Ñ Ð¿Ð¾Ð»ÑÐ³Ð°Ñ Ð² ÑомÑ, Ñоб напиÑаÑи ÑÑнкÑÑÑ factorial(n), Ñка обÑиÑлÑÑ n! за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑекÑÑÑивниÑ
викликÑв.
alert( factorial(5) ); // 120
P.S. ÐÑдказка: n! може бÑÑи запиÑане Ñк n * (n-1)!. ÐапÑиклад: 3! = 3*2! = 3*2*1! = 6
Ðа визнаÑеннÑм, ÑакÑоÑÑал n! може бÑÑи запиÑаний Ñк n * (n-1)!.
ÐнакÑе кажÑÑи, ÑезÑлÑÑÐ°Ñ factorial(n) може бÑÑи ÑозÑаÑ
ований, Ñк n помножений на ÑезÑлÑÑÐ°Ñ factorial(n-1). Рвиклик до n-1 може ÑекÑÑÑивно ÑпÑÑкаÑиÑÑ Ð½Ð¸Ð¶Ñе Ñа нижÑе, аж до 1.
function factorial(n) {
return (n != 1) ? n * factorial(n - 1) : 1;
}
alert( factorial(5) ); // 120
ÐазиÑом ÑекÑÑÑÑÑ Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ 1. Ðи Ñакож можемо зÑобиÑи 0 базиÑом, Ñе не Ð¼Ð°Ñ Ð²ÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾ знаÑеннÑ, але Ð´Ð°Ñ Ñе один ÑекÑÑÑивний кÑок:
function factorial(n) {
return n ? n * factorial(n - 1) : 1;
}
alert( factorial(5) ); // 120