Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
-- fact1 on defineeritud tingimusavaldise abil fact1 n = if n == 0 then 1 else n * fact1 (n-1) {- fact2 on defineeritud näidistega sobitamise abil; töötab ainult 32bitiste täisarvudega -} fact2 :: Int -> Int fact2 0 = 1 fact2 n = n * fact2 (n-1) -- fact3 on defineeritud "valvurite" abil fact3 :: Integer -> Integer fact3 n | n == 0 = 1 | otherwise = n * fact3 (n-1) -- see ei lähe lõpmatusse tsüklisse fact4 :: Integer -> Integer fact4 n | n == 0 = 1 | n >= 1 = n * fact4 (n-1) -- samad sõnad, kuid saavutatud n+k näidiste kasutamise abil fact5 :: Integer -> Integer fact5 0 = 1 fact5 (n+1) = (n+1) * fact5 n -- akumulaatorit kasutav faktoriaal -- defineeritud where konstruktsiooni abil fact6 :: Integer -> Integer fact6 n = fact6' 1 n where fact6' a 0 = a fact6' a n = fact6' (a*n) (n-1) -- akumulaatorit kasutav faktoriaal -- defineeritud let-avaldise, lambda-abstraktsiooni ja case-avaldise abil fact7 :: Integer -> Integer fact7 n = let fact7' = \ a n -> case n of 0 -> a _ -> fact7' (a*n) (n-1) in fact7' 1 n -- standartne iteratiivne definitsioon kasutades eeldefineeritud -- funktsiooni product ja aritmeetilise jada konstruktsiooni fact8 :: Integer -> Integer fact8 n = product [1..n] -- püsipunkti kombinaatori abil defineeritud faktoriaal fact9 :: Integer -> Integer fact9 = fixedPt f where f g 0 = 1 f g n = n * g (n-1) fixedPt f = g where g = f g