Problème récursivité
Résolu/Fermé
debmaths
-
28 févr. 2011 à 11:25
debmaths Messages postés 3 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 7 avril 2011 - 1 mars 2011 à 06:01
debmaths Messages postés 3 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 7 avril 2011 - 1 mars 2011 à 06:01
1 réponse
debmaths
Messages postés
3
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
7 avril 2011
1 mars 2011 à 06:01
1 mars 2011 à 06:01
J'ai trouvé enfin la solution:
;;; corrigesimple: liste (number ) ---> liste (number)
;;; vérifier l'ordre croissant des chiffres
;;; si 2 nombres sont en ordre inverse, les permuter. Uniquement les 2 premiers
(define (corrigeSimple L)
(if (and (pair? L) (pair? (cdr L)))
(if (< (car L) (cadr L))
(cons (car L) (corrigeSimple (cdr L)))
(cons (cadr L) (cons (car L) (cddr L))))
(list (car L)))) ;; (car L) dernier de la liste ou alors mettre L car reste le dernier de la liste
(trace corrigeSimple) (corrigeSimple (list 2 7 5 10 9))
Maintenant on me demande : à partir de cette définition mettre dans une liste tous les nombres en ordre croissant. C'est-à-dire qu'après (cons (cadr L) (cons (car L) (cddr L)) il faut relancer (corrigeSimple L) avec la nouvelle liste. Et là vraiment je n'ai aucune solution, je suis sec.
Quelqu'un peut-il m'aider ?? Au secours.
Mzerci d'avance
;;; corrigesimple: liste (number ) ---> liste (number)
;;; vérifier l'ordre croissant des chiffres
;;; si 2 nombres sont en ordre inverse, les permuter. Uniquement les 2 premiers
(define (corrigeSimple L)
(if (and (pair? L) (pair? (cdr L)))
(if (< (car L) (cadr L))
(cons (car L) (corrigeSimple (cdr L)))
(cons (cadr L) (cons (car L) (cddr L))))
(list (car L)))) ;; (car L) dernier de la liste ou alors mettre L car reste le dernier de la liste
(trace corrigeSimple) (corrigeSimple (list 2 7 5 10 9))
Maintenant on me demande : à partir de cette définition mettre dans une liste tous les nombres en ordre croissant. C'est-à-dire qu'après (cons (cadr L) (cons (car L) (cddr L)) il faut relancer (corrigeSimple L) avec la nouvelle liste. Et là vraiment je n'ai aucune solution, je suis sec.
Quelqu'un peut-il m'aider ?? Au secours.
Mzerci d'avance