Факториел

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Факториел е функция на естествено число n (n∈ℕ0), равна на произведението на първите n естествени числа. Например:

  • 5! = 5*4*3*2*1 = 120
  • 10! = 10*9*8*7*...*2*1 = 3628800
  • 0! се брои за 1, 0! = 1

Рекурсивно задаване на функцията факториел[редактиране | edit source]

Факториел може да бъде определена и чрез рекурсия, т.е. n! може да се изрази чрез факториел от естествени числа, по-малки от n:

  • n!=(n-1)!·n

Използвайки началната стойност 1! =1 и рекурсивното задаване на функцията, можем да я изчислим за всяка стойност на n∈ℕ.

Произволни реални и комплексни числа[редактиране | edit source]

Факториелът може да се определи и за произволното комплексно число z, по същия начин, както се определя факториела за естествени числа, но се нарича Гама-функция на Ойлер:

\Gamma(n+1) = n \, \Gamma(n)

която може и да се определи като :
\Gamma(z) = \int_0^\infty  t^{z-1} e^{-t}\,\mathrm{d}t \,\!
а предното определение следва от това след интегриране по части. Въведеното от самия Ойлер определение е:

\Gamma(z)=\lim_{n\to\infty}\frac{n^zn!}{\prod_{k=0}^n(z+k)}. \!, а днес използваното дължим на Адриан Мари Льожандър.

Интересно следствие от тези определения е, че \left( {1 \over 2}\right)! = {\sqrt{\pi}\over 2}


Приложения[редактиране | edit source]

Използва се в теорията на числата (например за изразяване на коефициентите на Нютоновия бином), при разлагането на аналитичните функции, например синус и косинус, в ред на Тейлър, което позволява практическото им изчисление с дадена точност, и т.н.

В компютърните науки[редактиране | edit source]

Имплементация на някои програмни езици:

 \operatorname{fact}(n) =
 \begin{cases}
 1 & \mbox{if } n = 0 \\
 n \cdot \operatorname{fact}(n-1) & \mbox{if } n > 0 \\
 \end{cases}
Псевдокод (рекурсивно):
функция факториел:
вход: цяло число n където n >= 0
изход: [n × (n-1) × (n-2) × … × 1]
1. ако n е 0, върни 1 2. иначе, върни [ n × факториел(n-1) ]
край факториел

C (език за програмиране):

int factorial(int n)
{
  if(n == 0)
    return 1;
 
  return n * factorial(n - 1);
}

Java:

private int factorial(int n)
{
   if(n == 0)
       return 1;
 
   return n * factorial(n - 1);
}

PHP:

function factorial($n)
{
    if($n == 0)
        return 1;
 
    return $n * factorial($n -1);
}

Външни връзки[редактиране | edit source]