[scheme] somme des elements d'une liste, qu'est ce qui va pas??

somme des elements d'une liste, qu'est ce qui va pas?? [scheme] - Divers - Programmation

Marsh Posté le 18-01-2004 à 11:37:09    

salut,
 
voila je voudrais faire un petit truc tout bete en scheme: la somme des elements d'une lsite... mais mon code marhce pas, je vois pas ou est l'erreur  :pt1cable:  
 
voici le code :
 
(define (somme-liste L)
  (if (pair? L)
      (+ (car L)
         (somme-liste (cdr L)))
      (list)))
 
quelqu'un a une idee???

Reply

Marsh Posté le 18-01-2004 à 11:37:09   

Reply

Marsh Posté le 18-01-2004 à 12:07:07    

(define (somme-liste l)
  (apply + l))
 
 
sinon ton code ne marche pas parce que une fois que tu as parcouru toute ta liste tu ne retourne pas le résultat mais (list), d'ailleurs je vois pas ce que tu veux faire avec (list), une liste vide ? > '() ou ()
 
sans apply :
 
non terminal:
(define (sum l)
  (if (null? l) 0 (+ (car l) (sum (cdr l)))))
 
terminal:
(define (sum l)
  (let aux ((l l) (res 0))
    (if (null? l) res (aux (cdr l) (+ res (car l))))))


Message édité par antsite le 18-01-2004 à 12:10:23
Reply

Marsh Posté le 18-01-2004 à 12:19:37    

antsite a écrit :

(define (somme-liste l)
  (apply + l))
 
 
sinon ton code ne marche pas parce que une fois que tu as parcouru toute ta liste tu ne retourne pas le résultat mais (list), d'ailleurs je vois pas ce que tu veux faire avec (list), une liste vide ? > '() ou ()
 
sans apply :
 
non terminal:
(define (sum l)
  (if (null? l) 0 (+ (car l) (sum (cdr l)))))
 
terminal:
(define (sum l)
  (let aux ((l l) (res 0))
    (if (null? l) res (aux (cdr l) (+ res (car l))))))


 
 
merci beaucoup antiste  :)  
 
oui, (list)=()
en fait, j'ai comprit grace a ton code, il faut trouver une condition zero, donc en modifiant mon code, ca donne :
(define (somme-liste L)  
 (if (pair? L)  
     (+ (car L)  
        (somme-liste (cdr L)))  
     0))  
 
 
et là ca marhce nikel,
 
donc merci a toi :jap:  
 
:hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed