% faktoriál - první varianta faktorial(N, Vysl) :- fakt_pom(N, 1, Vysl). fakt_pom(0, Vysl, Vysl). fakt_pom(Citac, Akumulator, Vysl) :- Citac > 0, C is Citac-1, A is Akumulator*Citac, fakt_pom(C, A, Vysl). % faktoriál - druhá varianta faktorial_v2(0, 1). faktorial_v2(Citac, Vysl) :- Citac > 0, C is Citac - 1, faktorial_v2(C, V), Vysl is Citac * V. % faktoriál - třetí varianta s operátorem řezu faktorial_v3(0,1) :- !. faktorial_v3(Citac, Vysl) :- % zde již není potřeba provádět kontrolu, % protože tato větev se už pro C = 0 neprovede C is Citac - 1, faktorial_v3(C, V), Vysl is Citac * V.