cours  |  td  |  examens  |  doc  |  liens  |  horaires
 Scheme





RÉCURSION SUR LES LISTES








  • PARCOURS RÉCURSIFS
  • 
    
    CALCULER LE NOMBRE D'ÉLÉMENTS
    D'UNE LISTE

     

      (OUR-LENGTH L)

      = (+ 1 (OUR-LENGTH (CDR L)))  


      (OUR-LENGTH    ( )) --> 0

                 ==> (NULL? L) EST VRAI

      

    
    
    
    (DEFINE (OUR-LENGTH L)
    
     (COND ((NULL? L) 0)   ; TEST D'ARRÊT
    
           (ELSE (+ 1
    
                    (OUR-LENGTH (CDR L))))))
    
    
    
    QUAND ON PARCOURT UNE LISTE L,
    LE TEST D'ARRET EST (NULL?   L)
    
    
    "CONCATÉNER" DEUX LISTES:


    (OUR-APPEND   L1   L2)

    = "CONCATÉNER" DEUX LISTES

    --> ON PARCOURT LA PREMIERE LISTE L1


     

      (OUR-APPEND '(1 2 3) '(4 5 6))

      = (CONS   1   (OUR-APPEND '(2 3) '(4 5 6)))  


      (OUR-APPEND ( ) '(4 5 6))

      --> (4 5 6)

      

     

     --> L1

     --> (CDR L1)

    
    
    
    (DEFINE (OUR-APPEND L1  L2)
    
     (COND ((NULL? L1) L2)   ; TEST D'ARRÊT
    
           (ELSE (CONS (CAR L1)
    
                       (OUR-APPEND (CDR L1) L2)))))
    
    
    
    POUR FAIRE UN TRAITEMENT
    RÉCURSIF D'UNE LISTE L:

    • SI (NULL? L) EST VRAI, ALORS STOP

    • SINON FAIRE UN TRAITEMENT SUR (CAR   L), AVEC UN "APPEL RÉCURSIF" SUR (CDR   L)






cours  |  td  |  examens  |  doc  |  liens  |  horaires
 Scheme