Bonjour.
Envoyé par
kbprince
1 2 3
| (define (corp df); vu en cours
(if (unpair df)'()
(caddr df))) |
Vous n'avez pas vu le 'not' ???
1 2 3
| (define (corps df); pas encore vu en cours ???
(if (not (pair? df)) '()
(caddr df))) |
Ce n'est peut-être pas la peine de définir une fonction 'unpair' juste pour inverser le sens de 'pair?' !!!
1 2 3 4 5 6
| ; sauf que comme les fonction fonction sans toute differentes je n'arrive pas a ecrire un programme adapté a toute les fonction récursivé :
(define (fonction df); elle renvoie le nom de la fonction dans la fonction elle même . exemple la fonction somraux " (somraux (- n 1) (+ n acc))" elle renvoie :> somraux
(if (unpair df)'()
(car(car(cdr(cdr( cdr(car (cdr( cdr df)))))))))) |
Comment peux-tu espérer que cette fonction marche pour toutes les fonctions???
Elle est beaucoup trop câblée sur la définition de 'somraux'!
Comme tu le dis plus loin, ça ne marchera que sur certaines fonctions qui auront la même forme que 'somraux'!
Je ne suis pas sûr que ton algorithme soit le bon:
1) rechercher LA fonction dans le corps
2) vérifier si cette fonction est la fonction
Il me semble qu'il vaudrait mieux explorer (parser) le corps de la fonction et chercher s'il contient (en position fonctionnelle) une ou plusieurs occurrences de la fonction.
En gros, écrire une fonction auxiliaire:
(define (nb-occurrences fct corps) ...)
qui retourne le nombre d'occurrences de 'fct' dans la liste 'corps'.
Il est clair que cette recherche est elle-même récursive!
Partager