bonjour a tous...

je me retrouve avec un devoir maison a faire que je pensée avoir compris..

voici les 2 exercices ou je bloque..

En utilisant reduce, donner une definition de somme-carres
tq : (somme-carres (1 2 3 4 5)) --> 55 (soit 5²+4²+3²+2²+1²)


Ma solution :

(define (somme-carres L)
(if (pair? L)
(if (pair? (cdr L))
(reduce + (* (car L) (car L)) (cdr L))
(list))
(list)))

(somme-carres (1 2 3 4 5)
ceci me renvoie 15 mais pourquoi ?


2) question.... Toujours avec REDUCE

sans reduce je trouve les deux fonctions mais lorsque j'integre Redruce rien ne marche !!!

nombre-occurences, qui a pour specification

nombre-occurences : [Valeur] * LISTE [Valeur] --> INT

c'est a dire exemple :
(nbre-occurence 2 (list 5 7 8 9)) -> 0
(nbre-occurence 3 (list)) -> ( )
(nbre-occurence 3 (list 1 2 3 4 5)) -> 1
(nbre-occurence "ma" (list 1 2 3 "ma" 3 "me" 4 "ma")) -> 2


ma solution est :

(define (nbre-oc e L)
;;; (compte-e x n) rend (n + 1) si x = e sinon n
(define (compte-e x n)
+ (if (equal? x e) 1 0) n)
(reduce compte-e 0 L))

ceci me renvoi
(nbre-occurence 2 (list 5 7 8 9)) -> 0
(nbre-occurence 3 (list)) -> 0
(nbre-occurence 3 (list 1 2 3 4 5)) -> 0
(nbre-occurence "ma" (list 1 2 3 "ma" 3 "me" 4 "ma")) -> 0

Ou est le probleme a nouveau ??


merci a tous....