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
01.
/**
02.
* Vypocita faktorial cisla
03.
* @param number cislo >= 0
04.
* @return faktorial cisla
05.
*/
06.
public
static
int
factorial(
int
number) {
07.
if
(number <
0
)
throw
new
IllegalArgumentException(
"zaporny argument"
);
08.
int
result =
1
;
09.
for
(
int
i = number; i >
1
; i--) {
10.
result *= i;
11.
}
12.
return
result;
13.
}
14.
/**
15.
* Vypocita rekurzivne faktorial cisla
16.
* @param number cislo >=0
17.
* @return faktorial cisla
18.
*/
19.
public
static
int
factorialRec(
int
number) {
20.
if
(number <
0
)
throw
new
IllegalArgumentException(
"zaporny argument"
);
21.
if
(number ==
0
|| number ==
1
)
return
1
;
22.
return
number * factorialRec(number -
1
);
23.
}
01.
/**
02.
* Vypocita faktorial vstupniho cisla
03.
* @param number Vstupni cislo
04.
* @return Faktorial vstupniho cisla
05.
* @author Thomas (www.adamjak.net)
06.
*/
07.
int
fakt(
int
number) {
08.
if
(number < 0)
09.
{
10.
return
0;
11.
}
12.
13.
int
i, result = 1;
14.
15.
for
(i = number; i > 1; i--)
16.
{
17.
result *= i;
18.
}
19.
return
result;
20.
}
21.
22.
/**
23.
* Vypocita faktorial vstupniho cisla rekurzivni formou algoritmu
24.
* @param $number Vstupni cislo
25.
* @return Faktorial vstupniho cisla
26.
* @author Thomas (www.adamjak.net)
27.
*/
28.
int
fakt_rek(
int
number) {
29.
if
(number < 0)
30.
{
31.
return
0;
32.
}
33.
34.
if
(number == 0 || number == 1)
35.
{
36.
return
1;
37.
}
38.
39.
return
number * fakt_rek(number - 1);
40.
}
01.
/** Autor: Vaclav Kejr */
02.
public
long
Faktorial(
int
n)
03.
{
04.
try
05.
{
06.
long
faktor = 1;
07.
if
(n < 1)
08.
{
09.
throw
new
ArgumentException(
"Argument n < 1 !"
, n.ToString());
10.
}
11.
else
if
(n == 1)
12.
{
13.
return
faktor = 1;
14.
}
15.
else
if
(n >= 2 && n <= 20)
16.
{
17.
for
(
int
i = 2; i <= n; i++)
18.
{
19.
faktor *= i;
20.
}
21.
return
faktor;
22.
}
23.
else
24.
{
25.
throw
new
ArgumentException(
"Argument n > 20 !"
, n.ToString());
26.
}
27.
}
28.
catch
(SystemException ex)
29.
{
30.
Console.WriteLine(ex.ToString());
31.
return
-1;
32.
}
33.
}
01.
/**
02.
* Vypocita faktorial vstupniho cisla
03.
* @param $number Vstupni cislo
04.
* @return Faktorial vstupniho cisla
05.
* @author Thomas (www.adamjak.net)
06.
*/
07.
08.
function
faktorial(
$number
) {
09.
if
(
$number
< 0) {
10.
die
(
"zaporny argument"
);
11.
}
12.
$result
= 1;
13.
for
(
$i
=
$number
;
$i
> 1;
$i
--) {
14.
$result
*=
$i
;
15.
}
16.
return
$result
;
17.
}
18.
19.
20.
/**
21.
* Vypocita faktorial vstupniho cisla rekurzivni formou algoritmu
22.
* @param $number Vstupni cislo
23.
* @return Faktorial vstupniho cisla
24.
* @author Thomas (www.adamjak.net)
25.
*/
26.
27.
function
faktorial_rek(
$number
) {
28.
if
(
$number
< 0) {
29.
die
(
"zaporny argument"
);
30.
}
31.
if
(
$number
== 0 ||
$number
== 1) {
32.
return
1;
33.
}
34.
return
$number
* faktorial_rek(
$number
- 1);
35.
}
1.
fact(0,1).
2.
fact(
N
,
R
) :-
N
>= 0,
integer
(
N
),
N
1
is
N
- 1, fact(
N
1,
R
1),
R
is
N
*
R
1.
01.
(
defun
fact (x)
02.
"generates factorial of x"
03.
(
if
(= x 0)
04.
1
05.
(* x (fact (- x 1)))))
06.
07.
(
defun
fact2 (x)
08.
"generates factorial of x"
09.
(
if
(zerop x)
10.
1
11.
(* x (fact2 (1- x)))))
12.
13.
(
defun
fact3 (x)
14.
"generates factorial of x"
15.
(
cond
((zerop x) 1)
16.
(T (* x (fact3 (1- x))))))