首页 > 解决方案 > 我将如何编写一个接收树(表示为列表)并返回其元素基本上颠倒的列表的 Scheme 过程?

问题描述

我在编写一个采用树(表示为列表)并返回一个列表的 Scheme 过程时遇到问题,该列表的元素是树的所有叶子,按从右到左的顺序排列。

例如,如果我要调用:( leaves '(((1 2) (3 4)) ((1 2) (3 4))) )我会得到:'(4 3 2 1 4 3 2 1)

到目前为止,我有以下内容,并且输出在技术上是正确的,但是括号存在问题:

(define (leaves givenList)
  (if (null? givenList) givenList
      (if (list? (car givenList))
          (append (leaves (cdr givenList)) (cons (leaves (car givenList)) '()))
          (append (leaves (cdr givenList)) (list (car givenList))))))

我打电话时的输出( leaves '(((1 2) (3 4)) ((1 2) (3 4))) )是:(((4 3) (2 1)) ((4 3) (2 1)))

我需要去掉里面的括号,然后得到:'(4 3 2 1 4 3 2 1)

非常感谢任何帮助或见解。谢谢!

标签: schemelispracket

解决方案


推荐阅读