Factorielle
Par pied, dimanche 24 décembre 2006 à 21:45 :: Informatique :: #62 :: rss
En plus, ca affiche la trace du calcul en cours..
import Control.Monad.State
fact :: Int -> (Int,[Int])
fact i = ((evalState r []),(reverse $ execState r [])) where
r = (aux i 1)
aux :: Int -> Int -> State [Int] Int
aux i r = if i <= 1
then do
x<- get
put(r:x)
return r
else do
l <- get
put (r:l)
aux (pred i) (r*i)
P!
import Control.Monad.State
fact :: Int -> (Int,[Int])
fact i = ((evalState r []),(reverse $ execState r [])) where
r = (aux i 1)
aux :: Int -> Int -> State [Int] Int
aux i r = if i <= 1
then do
x<- get
put(r:x)
return r
else do
l <- get
put (r:l)
aux (pred i) (r*i)
P!
Commentaires
1. Le samedi 30 décembre 2006 à 13:22, par .
2. Le dimanche 31 décembre 2006 à 00:15, par Pied
Ajouter un commentaire