Возникли проблемы при добавлении каждого другого нечетного элемента в список на схеме - PullRequest
0 голосов
/ 11 февраля 2012

Я пытаюсь добавить все нечетные элементы в список.

Я не могу понять, что не так. Он будет работать для списка всех шансов, но вызывает ошибку, если есть хотя бы одно четное число - он говорит, что ожидал число в качестве второго элемента, но вместо этого был передан список, чего не должно быть.

Что не так с моим кодом?

(define list-sum-odd
  (lambda (list)
    (cond
      ((null? list)
       0)
      ((odd? (car list))
       (+ (car list) (list-sum-odd (cdr list))))
      (list-sum-odd 
       (cdr list)))))

1 Ответ

6 голосов
/ 11 февраля 2012

Заменить (list-sum-odd (cdr list)) на (else (list-sum-odd (cdr list))). Таким образом, вы проверяете, является ли процедура list-sum-odd истинной (поскольку это не #f, а), а затем возвращаете (cdr list). Вы должны сообщить Scheme, что последним выражением должно быть выражение else.

...