好吧,我和我的朋友已经尝试过多次,但拒绝去找导师,因为他们所做的只是给我们答案,而这并不能帮助我们学习任何东西。
到目前为止,我可以获得代码来做两件事之一,返回列表的总和或返回列表本身,我们需要获取它,以便它返回列表和总和的最后一位。到目前为止,我们有两件事:
(define (add-checksum ls)
(cond
[(null? ls) 0]
[else (+ (car ls) (add-checksum (cdr ls)))]))
(define (add-checksum-helper ls)
(cond
[(null? ls) 0]
[else (cons (car ls) (add-checksum-helper (cdr ls)))]))
第一组代码进行加法并返回总和。第二个返回列表加上.0
总和的最后一位数字应该去哪里?任何人都可以帮助我们吗?谢谢!
编辑:
(define (checksum ls)
(append ls ((cdr (add-checksum ls)))))
(define (add-checksum ls)
(cond
[(null? ls) 0]
[else (+ (car ls) (add-checksum (cdr ls)))]))
回报是:
(checksum '(4 5 6 7 8))
((4 5 6 7 8) . 30)
我们需要它返回(4 5 6 7 8 0)
而不是(.30)
. 我们不知道如何获得0
. 如果我们这样做,(cdr 30)
我们会得到列表不是成对的。现在有什么建议吗?