2016-11-06 49 views
0

我正在试着制作一个名为special-num的函数,它接受一个列表,然后对列表中的每个元素进行分割,然后除以2并四舍五入。Special-Num DrScheme

这是到目前为止我的代码:

(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

不要重新定义empty?,在第一行你说是低于你使用它作为一个谓语空列表和两行。另外,这不是我们构建输出列表的方式,请使用cons。而你推进递归的方式是不正确的 - 最好试试这个:

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