나는 목록과 합계를 취하는 프로그램을 만들고있다. 목록에있는 숫자 중 일부가 합계와 일치하면 true를 반환합니다. 그렇지 않으면 거짓을 반환합니다. 어떤 경우에는 효과가 있지만 다른 경우에는 효과가없는 것 같습니다. 예를 들어,(구성표) 목록의 일부 숫자가 특정 숫자와 합쳐 졌는지 확인하십시오.
경우 I 입력이 :
(numlist-sum '(5 9) 9)
(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))))))
지금까지 작성한 'numlist-sum' 코드를 게시하는 것을 잊지 마십시오. –