【发布时间】:2017-04-06 15:10:17
【问题描述】:
我从 Racket 开始,我想在 Racket 中显示这个添加 cons 列表的 cdrs 的函数的值:
(define (add-cdrs '((a . 1)(a . 2)(a . 3)(a . 4)))
(if (null? l)
0
(+ (cdr(car l))(add-cdrs(cdr l)))))
输出应该是:10
但是,我不知道该怎么做,也不知道把显示功能放在哪里。
谢谢
【问题讨论】:
我从 Racket 开始,我想在 Racket 中显示这个添加 cons 列表的 cdrs 的函数的值:
(define (add-cdrs '((a . 1)(a . 2)(a . 3)(a . 4)))
(if (null? l)
0
(+ (cdr(car l))(add-cdrs(cdr l)))))
输出应该是:10
但是,我不知道该怎么做,也不知道把显示功能放在哪里。
谢谢
【问题讨论】:
您将过程 definition(在这种情况下应该声明一个用于保存列表的参数)与过程 invocation(绑定实际列表)混淆了到参数)。除此之外,您的逻辑是正确的。试试这个:
(define (add-cdrs lst)
(if (null? lst)
0
(+ (cdr (car lst)) (add-cdrs (cdr lst)))))
(add-cdrs '((a . 1) (a . 2) (a . 3) (a . 4)))
=> 10
【讨论】: