Na osnovu definicije faktorijela, važi da je
faktorijel(0) = 1.
faktorijel(x) = 1 * 2 *...* (x-1) * x , x > 0.
Pored promenljive x za koju računamo faktorijel i promenljive y u kojoj ćemo smeštati međurezultate i konačan rezultat našeg programa, potrebno je da imamo i jednu pomoćnu promenljivu, nazovimo je z, u kojoj ćemo čuvati informaciju dokle smo sa izračunavanjem faktorijela stigli. Program treba da prođe sledeće korake tokom izvršavanja:
{x ≥ 0} Korak 1: Pomoćnu promenljivu z inicijalno postaviti na 0, a y na 1. Korak 2: Promenljivu z uvećati za jedan. Korak 3: Promenljivu y pomnožiti sa vrednošću promenljive z. Korak 4: Ukoliko je z različito od x, onda se vratiti na korak 2 a inače završiti program. {y = faktorijel(x)}
Na paskalolikom jeziku program može da se napiše na sledeći način:
{x ≥ 0} y = 1; z = 0; while (z ≠ x) begin z = z + 1; y = y * z; end {y = faktorijel(x)}
Pitanje koje se sada postavlja je da li je ovaj program ispravan? Da li on zaista računa faktorijel prirodnog broja?