-1
следующий код:Функция Haskell «ехр» возвращает неверный результат
Module Main where
main :: IO()
main = do putStrLn "hello"
putStrLn $ "2 exp 6 = " ++ show (2 `exp1` 6)
exp1 :: Integer -> Integer -> Integer
exp1 x n | n == 0 = 1
| n == 1 = x
| even n = exp1 (x*x) m
| odd n = x * exp1 (x*x) (m-1)
where m = n `div` 2
производит выход 4
для 2 `exp1` 6
, который, очевидно, не так.
спасибо
Хорошо, я не тестировал, но заменил m-1 на m, должен работать. благодаря – lolveley