Fonction puissance

publicité
PROGRAMMATION FONCTIONNELLE : LISP
CAR : la fonction CAR retourne le 1er élément de la liste
CDR : la fonction CDR retourne la liste moins le 1er élément
CONS : la fonction CONS construit une liste
Fonction puissance
Définition :
- xn = x * xn-1
- x0 = 1
(defun power (x n)
( if ( = n 0) 1
( * x (power x (- n 1))
)
)
Version terminale avec la méthode :
- La fonction enveloppante est associative et possède un élément neutre
- a*(b*c)=(a*b)*c
et
a*1 = a
(defun power (x n)
(letn self (y x) (m n) (res 1))
( if ( = m 0) (* 1 res)
(self y ( - m 1) ( * res y))
)
)
)
Fonction factorielle
Définition :
- x ! = x * (x - 1) !
- 0!=1
(defun fact(x)
( cond
(( = x 0) 1)
( * x fact (x – 1))
)
)
Version terminale récursive intuitive :
(defun fact_aux(x res)
( if( = 0 x) res
(fact_aux(- x 1)(* x res))
)
)
Version terminale récursive en appliquant la méthode :
- La fonction enveloppante est associative et possède un élément neutre
- a*(b*c)=(a*b)*c
et
a*1 = a
Élément neutre de *
(defun fact (x)
(letn self (y x)(res 1))
fonction enveloppante
(cond
(( = y 0) (* 1 res))
(self (- y 1)( * y res))
)
)
)
de fac
Téléchargement