我在使用DrRacket时遇到了一个小问题。我已经在C,C ++,Java,Python等方面进行了相当广泛的编程,但之前从未使用过函数式编程语言,因此我被绊倒了。
我有一个节点,我需要返回一个" eye-color"该节点的特征,以及它的所有父元素(以及父母'父母等)。这就是我所拥有的,我无法弄清楚我哪里出错了。我怀疑它与我必须添加的所有“空白”有关,因为我不能真正得到那些。那么多该死的括号,哈哈。它使一切正确,但是有一堆其他空间或其他东西而不是一个列表。
(define (eye-colors f)
(cond [(empty? f) empty]
[ else (cons (cons (child-eyes f) (eye-colors (child-mom f))) (eye-colors (child-mom f)))]))
我对一个特定节点的输出是:
(list
(list
'blue
(list 'green (list 'brown))
(list 'blue))
(list 'orange))
应该是这样的:
(list 'blue 'green 'brown 'blue 'orange)
非常感谢您提供的任何帮助!!
答案 0 :(得分:0)
知道了!由于缺点,问题是嵌套列表。通过将第一个缺点切换为追加来解决问题,现在一切都很好。工作代码如下。
(define (eye-colors f)
(cond [(empty? f) empty]
[ else (append (cons (child-eyes f) (eye-colors (child-mom f))) (eye-colors (child-dad f)))]))