Visitar URL original
فاکتوریل را حساب کنید

ما قصد داریم این پروژهٔ متن‌باز را در دسترس همهٔ مردم در سرتاسر دنیا قرار دهیم.

به ترجمهٔ محتوای این آموزش به زبان خودتان کمک کنید/a>.

بازگشت به درس

فاکتوریل را حساب کنید

اهمیت: 4

فاکتوریل یک عدد طبیعی، عددی است که در "عدد منهای یک" ضرب می‌شود سپس در "عدد منهای دو" و همینطور تا 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

پی‌نوشت: راهنمایی: 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