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

 


Autori[ ZADANIE | AKO ZAČAŤ | RIEŠENIE ]
Posledná aktualizácia 4. 9. 2001
back  home  next