我正在尝试创建一个名为special-num的函数,它接受一个列表,然后列表中的每个元素,将它除以2并向上舍入。
到目前为止,这是我的代码:
(define empty? '())
(define (special-num lyst)
(cond((empty? lyst) lyst)
;((empty? (cdr lyst)) (ceiling (/ (car lyst) 2)))
(else (list (ceiling (/ (special-num (car (cdr lyst))) 2))))))
答案 0 :(得分:1)
请勿重新定义empty?
,在第一行中您说这是一个空列表,而您下面有两行将其用作谓词。此外,这不是我们构建输出列表的方式,请使用cons
。你推进递归的方式是不正确的 - 最好试试这个:
(define (special-num lyst)
(cond ((empty? lyst) lyst)
(else (cons (ceiling (/ (car lyst) 2))
(special-num (cdr lyst))))))