Схема, рекурсия со списком списков - PullRequest
1 голос
/ 11 декабря 2011

У меня небольшая проблема с моей процедурой.Эта процедура берет список списков, и хотя его длина больше, чем 1, применяют процедуру минус, которая берет 2 списка и делает разницу. Это мой результат для проблемы с подмножествами наборов.Пример, что мне нужно:

args = ('(1)' (1) '(3))

длина! = 1 -> процедура (если (ноль? (Минус)'(1)' (1))))

-> рекурсия (sub (cdr args))

args = ('(1)' (3))

length! = 1 -> процедура (если (null? (минус '(1)' (3)))) -

# f end.

но моя программа делаетЯ не знаю, что и потом вернуть #t ...

(define sub
  (lambda args
    (if(= (length args) 1) #t
       (if(null? ( minus (list-ref args 0) (list-ref args 1)))
          (sub (cdr args))
          #f))))

Исправлено:)

(define subsethood
  (lambda args

    (sub args)
    ))

(define (sub args)

    (if(= (length args) 1) #t
       (if(null? ( minus (list-ref args 0) (list-ref args 1)))
          (sub (cdr args))
          #f)))

1 Ответ

0 голосов
/ 11 июля 2014

Из @OndrPem edit, просто чтобы быть в нужном месте.

(define subsethood
  (lambda args

    (sub args)
    ))

(define (sub args)

    (if(= (length args) 1) #t
       (if(null? ( minus (list-ref args 0) (list-ref args 1)))
          (sub (cdr args))
          #f)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...