Je suis un débutant à Scheme, alors pardonnez la question: J'ai une fonction qui calcule les factorielles d'une liste de nombres, mais cela me donne une période avant le dernier nombre dans le résultats. Où vais-je mal?Schéma Factoriel (fait * l) Question
code:
#lang scheme
(define fact
(lambda (n)
(cond
((= n 0) 1)
((= n 1) 1)
(else (* n (fact (- n 1)))))))
(define fact*
(lambda (l)
(cond
((null? (cdr l)) (fact (car l)))
(else
(cons (fact (car l)) (fact* (cdr l)))))))
sortie:
> (fact* '(3 6 7 2 4 5))
(6 720 5040 2 24 . 120)
Merci! Existe-t-il un moyen de faire cela avec les primitives Scheme? Est-ce que la liste est une primitive? – Isaac
J'ai modifié pour ajouter la deuxième mise en œuvre après votre commentaire ci-dessus. Est-ce que ça répond à votre question? –
Ah, superbe! Ma connaissance du "Petit Schémer" a été oubliée momentanément. Je vous remercie! – Isaac