2013-02-22 2 views
2

Je suis en train de mettre en œuvre une fonction somme calc de la liste, son nom est sum -Scheme - somme de la liste

(define (sum elemList) 
    (if 
    (null? elemList) 
    (+ (car elemList) (sum (cdr elemList))) 
    0 
) 
) 

La mise en œuvre ci-dessus donne un mauvais résultat, par exemple -

> (sum (list 1 2 3 4)) 
0 

Qu'est-ce que j'ai fait de mal ici?

Répondre

6

Je pense que vous troqué le alors et le autre partie du if:

(define (sum elemList) 
    (if 
    (null? elemList) 
    0 
    (+ (car elemList) (sum (cdr elemList))) 
) 
) 

Dans la fonction d'origine, pour chaque liste non vide, 0 est retourné.

+2

Et pour une liste vide, une erreur serait produite car elle essaierait de prendre les 'car' et' cdr' d'une liste vide. – sepp2k

Questions connexes