35 lines
582 B
Haskell
35 lines
582 B
Haskell
|
{- | Find factorial -}
|
||
|
fact :: Int -- ^ Integer whose factorial is to be found
|
||
|
-> Int -- ^ Factorial value
|
||
|
fact n
|
||
|
| n > 1 = n * fact (n - 1)
|
||
|
| n <= 1 = 1
|
||
|
|
||
|
{- | No error handling
|
||
|
|
||
|
|
||
|
Used div instead of / to get integer result instead of float.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
> p 9 4
|
||
|
3024
|
||
|
-}
|
||
|
p :: Int -- ^ n
|
||
|
-> Int -- ^ r
|
||
|
-> Int -- ^ nPr
|
||
|
p n r
|
||
|
| n > r && r >= 0 = (fact n) `div` fact (n - r)
|
||
|
-- | n == (r + 1) = 1
|
||
|
-- | n > r = n * (p (n-1) r)
|
||
|
|
||
|
{- | No error handling
|
||
|
|
||
|
Example:
|
||
|
|
||
|
-}
|
||
|
c :: Int -- ^ n
|
||
|
-> Int -- ^ r
|
||
|
-> Int -- ^ nCr
|
||
|
c n r = (p n r) `div` (fact r)
|