diff --git a/src/3n+1/Main.hs b/src/3n+1/Main.hs index ec9d22e..1ef460a 100644 --- a/src/3n+1/Main.hs +++ b/src/3n+1/Main.hs @@ -30,14 +30,15 @@ f :: Integer -> Integer f n = s 1 n where s :: Integer -> Integer -> Integer - s i n - | n == 1 = i - | n == 0 = i - | n == (-1) = i - | n == (-5) = i - | n == (-17) = i - | even n = s (succ i) (n `div` 2) - | odd n = s (succ i) (3*n + 1) + s c n + | n == 1 = c + | n == 0 = c + | n == (-1) = c + | n == (-5) = c + | n == (-17) = c + | even n = s c' (n `div` 2) + | odd n = s c' (3*n + 1) + where c' = succ c f' :: Integer -> Integer f' n = f'' 1 n