بازگشت به درس

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

اهمیت: 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