有人能帮我找出在列表中找到一个分钟和一个最大值并将它们作为列表返回的方法有什么问题吗?应该是合乎逻辑的。我想括号有问题吧。
(define (find-min-and-max my-list)
(find-min-max-rec (car my-list) (car my-list) my-list)
)
(define (find-min-max-rec smallest largest ls)
(if (null? ls)
(list smallest largest)
)
(cond
((and (< smallest (car ls)) (> largest (car ls)) ) (find-min-max-rec (car ls) (car ls) (cdr ls)))
((< smallest (car ls)) (find-min-max-rec (car ls) largest (cdr ls)))
((> largest (car ls)) (find-min-max-rec smallest (car ls) (cdr ls)))
(else (find-min-max-rec smallest largest (cdr ls)))
)
)
(display (find-min-and-max '(1 2 3 4)))控制台输出
*** ERROR: pair required, but got ()
While loading "./jdoodle.sc" at line 17
Stack Trace:
_______________________________________
0 (car ls)
at "./jdoodle.sc":10
1 (find-min-and-max '(1 2 3 4))
at "./jdoodle.sc":17
Command exited with non-zero status 70期望
(1 4)此外,是否建议使用任何调试工具?
注意:我一直在这里运行代码:https://www.jdoodle.com/execute-scheme-online
发布于 2018-03-04 05:29:43
是的,其实你是对的。括号有问题。
这里有条线索:这个评估的目的是什么?
(define (f x)
(if (< x 5) 10)
12)
(f 3)为什么?
https://stackoverflow.com/questions/49092210
复制相似问题