reverse sans append
Article mis en ligne le 18 novembre 2005
dernière modification le 13 juillet 2012

par Laurent Bloch

Comme promis voici une réalisation de la procédure reverse qui ne fait pas appel à la procédure append. En outre elle est itérative.

  1. (define (mon-reverse L)
  2.   (define (epuise L dest)
  3.     (if (null? L)
  4.         dest
  5.         (epuise (cdr L) (cons (car L) dest))))
  6.   (epuise L '()))

Télécharger

Ou encore :

  1. (define (reverseb L)
  2.    (let iter ((RL '())
  3.               (L L))
  4.       (if (null? L)
  5.           RL
  6.           (iter (cons (car L) RL)
  7.                 (cdr L)))))

Télécharger

Ou bien encore :

  1. (define (mon-reverse L)
  2.   (letrec ((epuise
  3.             (lambda (L dest)
  4.                (if (null? L)
  5.                    dest
  6.                    (epuise (cdr L) (cons (car L) dest))))
  7.             ))
  8.      (epuise L '())))

Télécharger