Druhé číslo sčítam rekurzívne toľko krát, aká je hodnota prvého čísla. Keď chcem ošetriť aj nulové a záporné čísla je vhodné volať našu funkciu na násobenie kladných čísel ešte z inej (hlavnej) funkcie, ktorá ošetrí tieto vstupy.
; Čísla sú kladné > 0.
(defun sucin_a (c1 c2)
(cond ((= c1 1) c2)
(T (+ c2 (sucin_a (- c1 1) c2)))
)
)
; Príklad:
(sucin_a 7 3) -> 21
; Keď chceme ošetriť aj nulové a záporne čísla.
; Hlavná funkcia (akceptuje aj nulové a záporné čísla).
(defun sucin_b (c1 c2)
(cond ((OR (= c1 0) (= c2 0)) 0)
((AND (< c1 0) (< c2 0)) (sucin (- c1) (- c2)))
((< c1 0) (- (sucin (- c1) c2)))
((< c2 0) (- (sucin c1 (- c2))))
(T (sucin c1 c2))
)
)
; Príklady:
(sucin_b 7 3) -> 21
(sucin_b 0 7) -> 0
(sucin_b 7 -3) -> -21
(sucin_b -7 -3) -> 21