Před vstupem do cyklu je hodn = 1. To odpovídá mocnině v případě, že exp = 0. Dále 1 je z pohledu násobení neutrální, číslo násobeno jedničkou je číslo samé. V cyklu se hodn násobí základem a uloží se zpět do hodn tolikrát, kolik je exponent. Takže pokud je exponent 1, proběhne 1 iterace cyklu, 1x se provede hodn = hodn * zaklad - výsledek je hodn = 1*základ. Podobně to je pro exp = např 3 - proběhnou 3 iterace cyklu:
1. nyní je hodn = 1, provede hodn = 1*základ
2. nyní je hodn = základ, provede se hodn = zaklad*zaklad
3. nyní je hodn = zaklad*zaklad, provede se hodn = (zaklad*zaklad) * zaklad
Vždy je v hodn výsledek součinu po předchozí iteraci cyklu, cyklus začne první mocninou a dekrementuje exp, v další iteraci ji vynásobí základem - vznikne druhá mocnina a dekrementuje exp, tu v další iteraci násobí základem - vznikne třetí mocnina a dekrementuje exp .... až po okamžik, kdy vznikne požadovaná mocnina, v tu chvíli exp dosáhne hodnotu 0 a cyklus je ukončen.
Cyklus s dekrementací je šikovnější, nepotřebuje vytvářet další proměnnou jako řídící proměnnou cyklu a uvádí se, že dekrementace je rychlejší než inkrementace. Cyklus s inkrementací by vypadal takto:
for(int i = 0; i < exp; i++) hodn = hodn * zaklad;
hu