Definice funkce
- Používáme makro
defun
(defun triangle-area (b h)
(* 1/2 b h))
Popis funkce
Název funkce … libovolný symbol Parametry … symboly Tělo … libovolný výraz
- Primitivní vs uživatelsky definovaná funkce
Rekurzivní funkce
- Taková funkce, která ve svém těle volá sebe samu (poznáme ze zdrojového kódu)
- Výpočetní proces je rekurzivní pokud během aplikace funkce dojde k aplikaci téže funkce (poznáme při běhu programu)
- Nutné mít ukončovací podmínku, jinak dojde k zacyklení
Info
Výpočetní proces je iterativní když na konci aplikace funkce dojde opět k aplikaci stejné funkce.
; Neni iterativni
(defun power (a n)
(if (= n 0)
1
(* a (power a (- n 1)))))
; Je iterativni
(defun fact-iter (n ir)
(if (= n 0)
ir
(fact-iter (- n 1) (* ir n))))
(defun fact (n)
(fact-iter n 1))
Výpočetní proces
Lineárně rekurzivní … pokud během aplikace funkce dojde po skončení jedné její rekurzivní aplikace nenásleduje další
Stromově rekurzivní … pokud alespoň jednou během aplikace funkce po skončení jedné její rekurzivní aplikace následuje další
; stromove rekurzivni
(defun fib (n)
(cond ((= n 0) 0)
((= n 1) 1)
(t (+ (fib (- n 2)) (fib (- n 1))))))