Схема Глубокая обратная функция - PullRequest
0 голосов
/ 03 декабря 2010

Я делаю программу-схему, которая берет список, а затем переворачивает его.Пока что это работает для простого списка, который не содержит какого-либо подсписка, но когда я проверяю его для списка, содержащего подсписок, происходит сбой.Пожалуйста, помогите мне, где это не так.Вот код:

(define deep-reverse
  (lambda (L)
    (cond
      ((empty? L) '())
      (else (append (deep-reverse (rest L)) (list (first L)))))))

Ответы [ 2 ]

1 голос
/ 12 октября 2011
(define (deeprev L)
          (if (null? L) '()
              (if (list? (car L))
                  (if (chek (car L)) (append (deeprev (cdr L)) (list (reverse (car L))))         
                  (append (deeprev (cdr L)) (list (deeprev (car L)))))
                  (append (deeprev (cdr L)) (list (car L))))))
0 голосов
/ 03 декабря 2010

Прежде всего, вы используете неопределенные функции Scheme.Я собираюсь отработать следующие предположения:

пусто?is null?

rest is cdr

first is car

Ваш код работает, беря первый элемент в списке и добавляя его в другой список.Однако этот первый элемент списка может быть самим списком.Вам нужно проверить, является ли элемент, над которым вы работаете, атомарным или списочным.Если это список, то вы вызываете рекурсивно глубокий реверс.

Если вы хотите, чтобы код был добавлен к этому, оставьте комментарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...