Special-Num DrScheme

时间:2016-11-06 23:59:25

标签: scheme racket

我正在尝试创建一个名为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))))))

1 个答案:

答案 0 :(得分:1)

请勿重新定义empty?,在第一行中您说这是一个空列表,而您下面有两行将其用作谓词。此外,这不是我们构建输出列表的方式,请使用cons。你推进递归的方式是不正确的 - 最好试试这个:

(define (special-num lyst)
  (cond ((empty? lyst) lyst)
        (else (cons (ceiling (/ (car lyst) 2))
                    (special-num (cdr lyst))))))