我正在制作一个带有列表和总和的程序。如果列表中的某些数字加起来等于总和,则返回 true。否则,返回假。它似乎适用于某些情况,但不适用于其他情况。例如,
如果我输入这个:
(numlist-sum '(5 9) 9)
它应该返回 true,因为其中一个数字 (9) 等于总和 (9)。但是,由于某种原因,它返回错误。
我无法弄清楚问题是什么。请帮忙?
(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))))))