Bon, j'ai un peu progressé. Je problème que j'avais est que format renvoie NIL donc avec une forme du type:
(format t "==> ~A~%" (* n (fact (- n 1))))
je perds la valeur retournée par la fonction. J'utilise donc PRINT qui affiche la valeur calculée dans le corps de la fonction puis retourne cette valeur. Cela donne:
1 2 3 4 5
| (defun fact (n)
(format t "Entering fact ~A~%" n)
(if (> n 0)
(print (* n (fact (- n 1))))
(print 1))) |
J'obtiens:
CL-USER> (fact 3)
Entering fact 3
Entering fact 2
Entering fact 1
Entering fact 0
1
1
2
6
6 (valeur de (fact 3))
La question suivante est comment obtenir un affichage du type:
Entering fact 3
Entering fact 2
Entering fact 1
Entering fact 0
==> 1
==> 1
==> 2
==> 6
6
ou même:
Entering fact 3
Entering fact 2
Entering fact 1
Entering fact 0
fact 0 ==> 1
fact 1 ==> 1
fact 2 ==> 2
fact 3 ==> 6
6
Partager