2013-02-22 2 views
2

Я пытаюсь реализовать функцию, которая известково сумма списка, его имя sum -схема - сумма списка

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

выше реализация дает неправильный результат, например -

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

Что я здесь сделал неправильно?

ответ

6

Я думаю, что вы поменяли местами то и еще часть if:

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

В исходной функции, для каждого непустого списка, 0 возвращается.

+2

И для пустого списка будет создана ошибка, потому что он попытается взять 'car' и' cdr' пустого списка. – sepp2k

Смежные вопросы