Как создать и добавить элементы в список в схеме? - PullRequest
3 голосов
/ 15 марта 2010

Я хочу определить метод, который принимает целое число в качестве входных данных и динамически создает список всех убывающих целых чисел до нуля. Я нахожу проблемы в вызове метода для элемента n-1

Ответы [ 3 ]

5 голосов
/ 15 марта 2010

Это не так уж и красиво, но это должно работать, протестировано в DrScheme.

(define (gen-list x )
  (if (= x 0) (list 0) (cons x (gen-list (- x 1)))))
3 голосов
/ 02 февраля 2012

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

  (define (gen-list x)  
           (let lp ((n 0) (ret '())) 
              (if (> n x) 
              ret 
              (lp (1+ n) (cons n ret)))))
0 голосов
/ 23 марта 2010

Если вы используете схему PLT, библиотека пониманий позволит вам сделать это довольно аккуратно:

; natural -> (listof natural)
(define (list-to-zero start-num)
 (for/list ([i (in-range start-num 0 -1)])
  i))

Просто альтернатива рекурсивной форме ...

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