Я создал две функции, которые помогут мне решить мою проблему суммы подмножеств .Я, кажется, получаю ошибку, хотя.Это говорит мне, что я передаю два аргумента list-sum
.Я дурачился с этой программой уже несколько часов.Мне было интересно, если кто-нибудь может обнаружить проблему.
Это мой list-sum
:
(define list-sum
(lambda(lst)
(cond
((null? lst) 0)
((pair? (car lst))
(+(list-sum (car lst)) (list-sum (cdr lst))))
(else
(+ (car lst) (list-sum (cdr lst)))))))
Это моя функция, которая использует list-sum
:
(define ssum
(lambda (n l)
(cond
((null? l) #f)
((=(-(- n (car l))(list-sum l)) 0) l)
((ssum (cons (car l)) (cdr (cdr l))))
(else (ssum n (cdr l))))))
Это говорит мне, что я вызвал «составную процедуру # (число) ssum» с одним аргументом и что он требует двух аргументов.Я передаю это как (ssum 8 (list 1 3 5 7))
.
Мои вопросы:
- Правильно ли я настроил свои функции?
- Есть ли более простой способ суммирования чисел в списке внутри моего
ssum
? - Я тоже новичок в Схеме.Если вы видите очевидный способ сокращения кода, пожалуйста, не стесняйтесь исправлять меня.