рдкрд╛рдпрдерди рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рдпрдорд┐рддрддрд╛ рдФрд░ рдкрдардиреАрдпрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдирд╣реАрдВред
рдкрд╛рдпрдерди рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рдпрдорд┐рддрддрд╛ рдФрд░ рдкрдардиреАрдпрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рдХреНрддрд┐ рдирд╣реАрдВред
рдПрд░рд┐рдХреНрд╕рди рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рднрд╛рд╖рд╛ (Erlang, PLEX, C, C ++ рдпрд╛ Java) рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ред рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдВрддрд░ - рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ рдореЗрдВред
рдХреБрд▓ рдкреНрд░рдпрд╛рд╕ = рдПрдХ рдкрдВрдХреНрддрд┐ * рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕
(rec zero 1 * 1-)
(rfn fact (x) (if (zero x) 1 (* x (fact (1- x)))))