Scheme中如何将列表内元素全部转换为绝对值?代码运行报错求助
错误原因
- cond分支结构不规范:第二个分支缺少
else判断条件,直接把cons作为判断条件虽然能命中,但不符合分支写法逻辑。 - 函数调用括号错误:
cons的语法是(cons 待插入元素 目标列表),你额外给两个参数套了一层括号,变成了(cons ((abs ...) (myabs ...))),内层括号会被识别为函数调用,尝试把求出来的绝对值数字作为函数执行,同时触发了异常递归,才会出现重复的myabs调用报错。
修正后的代码
(define (myabs list) (cond ((null? list) '()) (else (cons (abs (car list)) (myabs (cdr list)))) )) (display (myabs '(-3 5 6 -2)))
运行输出
(3 5 6 2)
内容的提问来源于stack exchange,提问作者Admin Developer
相关产品推荐
相关产品推荐

