Bonjour,

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
(define (calcul p l lro )
  (cond ((null?( car l)) lro)
        (else calcul p (cdr l) (add p (car l) (cons(car (car l)) () ) (addr lro) lro) ) ) )
 
 
(define (add p ltc lto lrc lro)
  (cond ((or (null? (cdr ltc)) 
             (>  (+ (car (car ltc)) (car (car (cdr ltc)))) p))   
         (cond ((> (car (cdr (car ltc))) (car(cdr (car lrc)))) lto) 
               (else lro )))  
 
        (else (add p 
                   (append (cons (cons (+ ( car (car ltc) ) (car (car (cdr ltc))))
                                       (cons (+ (car (cdr (car ltc))) (car (cdr (car (cdr ltc))))) ()) 
                                       )()) 
                           (cdr (cdr ltc)))
                   (append (cons (car (cdr ltc)) () ) lto) lrc lro))))
 
 
( define (addr ltc) 
   (cond ( (null? (cdr ltc) )  ltc)
         (else 
          (addr (
                 append (            
                         cons            
                         (                        
                          cons                                      
                          ( + ( car (car ltc) ) (car (car (cdr ltc) ) ) )                                              
                          (cons (+ (car (cdr (car ltc) ) ) ( car (cdr (car (cdr ltc) ) ) ) ) ())                                                     
                          )                                            
                         ()                                       
                         )                                       
                        (cdr (cdr ltc) )                                  
                        ) 
                ) ) ) )
J'envoie une liste l à "calcul" de type ( ( (2 3) (3 5) (3 5) ) ( (3 6) (6 2) (3 5) ) ), un argument p = 6, et un lro = car(car l)

"Add" et "addr" font bien leur travail. Mais dès la premiere fois où le programme rentre dans addr, l'interpréteur me renvoie lro ou lto (suivant le cas) alors qu'elle doit normalement le renvoyer à la fonction calcul afin de continuer la récursivité. Comme d'habitude, je ne vois pas le problème...

Merci