Faktoriál je funkce, jejímž argumentem je přirozené číslo n a výstupem je součin všech čísel menších nebo rovných (v případě
je výsledkem 1). Faktoriál čísla
se značí
.
Příklady
Kód
/**
* Vypocita faktorial cisla
* @param number cislo >= 0
* @return faktorial cisla
*/
public static int factorial(int number) {
if (number < 0) throw new IllegalArgumentException("zaporny argument");
int result = 1;
for (int i = number; i > 1; i--) {
result *= i;
}
return result;
}
/**
* Vypocita rekurzivne faktorial cisla
* @param number cislo >=0
* @return faktorial cisla
*/
public static int factorialRec(int number) {
if (number < 0) throw new IllegalArgumentException("zaporny argument");
if (number == 0 || number == 1) return 1;
return number * factorialRec(number - 1);
}
/**
* Vypocita faktorial vstupniho cisla
* @param number Vstupni cislo
* @return Faktorial vstupniho cisla
* @author Thomas (www.adamjak.net)
*/
int fakt(int number) {
if (number < 0)
{
return 0;
}
int i, result = 1;
for (i = number; i > 1; i--)
{
result *= i;
}
return result;
}
/**
* Vypocita faktorial vstupniho cisla rekurzivni formou algoritmu
* @param $number Vstupni cislo
* @return Faktorial vstupniho cisla
* @author Thomas (www.adamjak.net)
*/
int fakt_rek(int number) {
if (number < 0)
{
return 0;
}
if (number == 0 || number == 1)
{
return 1;
}
return number * fakt_rek(number - 1);
}
/** Autor: Vaclav Kejr */
public long Faktorial(int n)
{
try
{
long faktor = 1;
if (n < 1)
{
throw new ArgumentException("Argument n < 1 !", n.ToString());
}
else if (n == 1)
{
return faktor = 1;
}
else if (n >= 2 && n <= 20)
{
for (int i = 2; i <= n; i++)
{
faktor *= i;
}
return faktor;
}
else
{
throw new ArgumentException("Argument n > 20 !", n.ToString());
}
}
catch (SystemException ex)
{
Console.WriteLine(ex.ToString());
return -1;
}
}
/**
* Vypocita faktorial vstupniho cisla
* @param $number Vstupni cislo
* @return Faktorial vstupniho cisla
* @author Thomas (www.adamjak.net)
*/
function faktorial($number) {
if ($number < 0) {
die("zaporny argument");
}
$result = 1;
for ($i = $number; $i > 1; $i--) {
$result *= $i;
}
return $result;
}
/**
* Vypocita faktorial vstupniho cisla rekurzivni formou algoritmu
* @param $number Vstupni cislo
* @return Faktorial vstupniho cisla
* @author Thomas (www.adamjak.net)
*/
function faktorial_rek($number) {
if ($number < 0) {
die("zaporny argument");
}
if ($number == 0 || $number == 1) {
return 1;
}
return $number * faktorial_rek($number - 1);
}
fact(0,1). fact(N,R) :- N >= 0, integer(N), N1 is N - 1, fact(N1,R1), R is N * R1.
(defun fact (x) "generates factorial of x" (if (= x 0) 1 (* x (fact (- x 1))))) (defun fact2 (x) "generates factorial of x" (if (zerop x) 1 (* x (fact2 (1- x))))) (defun fact3 (x) "generates factorial of x" (cond ((zerop x) 1) (T (* x (fact3 (1- x))))))