リストと合計を取るプログラムを作成しています。リスト内の数値の一部が合計になる場合は、true を返します。それ以外の場合は、false を返します。一部のケースでは機能しているようですが、他のケースでは機能していないようです。例えば、
これを入力すると:
(numlist-sum '(5 9) 9)
数値の 1 つ (9) が合計 (9) に等しいため、true を返す必要があります。しかし、何らかの理由で、false が返されます。
何が問題なのかわかりません。助けてください?
(define (numlist-sum? ls sum)
(if (null? ls) #t
(if (and (null? (cdr ls)) (equal? (car ls) sum)) #t
(if (equal? (car ls) sum) #t
(if (equal? (cdr ls) sum) #t
(if (equal? (apply + (car ls) (cdr ls)) sum) #t
#f))))))