;----------------------------------------------------- ;Fibonacciho postupnost ;----------------------------------------------------- ;vypocita n-ty clen Fibonacciho postupnosti ;naivna viacnasobna rekurzia ;FIB1 :: nat -> nat (DEFUN FIB1 (N) (COND ((= N 0) 1) ((= N 1) 1) ((< 1 N) (+ (FIB1 (- N 1)) (FIB1 (- N 2)))) )) ;----------------------------------------------------- ;priebezne vytvaranie postupnosti ;FIB2 :: nat -> nat (DEFUN FIB2 (N) (FIRST (FIB2-AUX N '(1 1))) ) ;vytvori postupnost Fibonacciho cisel .. ;..od indexu 0 po N (od najvacsieho po najmensi) ;FIB2-AUX :: (nat x [nat]) -> [nat] (DEFUN FIB2-AUX (N ZOZ) (COND ((< N 2) ZOZ) (T (FIB2-AUX (- N 1) (CONS (+ (FIRST ZOZ) (FIRST (REST ZOZ))) ZOZ))) )) ;----------------------------------------------------- ;priebezne vytvaranie postupnosti ;FIB3 :: nat -> nat (DEFUN FIB3 (N) (COND ((OR (= N 0) (= N 1)) 1) (T (FIB3-AUX N 1 1)) )) ;pomocna funkcia pre FIB3 ;arg. 2 a 3 uchovavaju N-1 a N-2 clen .. ;..Fibonacciho postupnosti ;FIB3-AUX :: (nat x nat x nat) -> nat (DEFUN FIB3-AUX (N FIB_N-1 FIB_N-2) (COND ((= N 2) (+ FIB_N-1 FIB_N-2)) (T (FIB3-AUX (- N 1) (+ FIB_N-1 FIB_N-2) FIB_N-1)) ))