私はハスケルを新しくしています。ここでは無限ループが発生していますが、理由はわかりません。pow関数の無限ループ
module Main where
pow :: Int -> Int -> Int
pow x 0 = 1
pow x y = x * pow x y-1
main :: IO()
main = print(pow 2 3)
私はハスケルを新しくしています。ここでは無限ループが発生していますが、理由はわかりません。pow関数の無限ループ
module Main where
pow :: Int -> Int -> Int
pow x 0 = 1
pow x y = x * pow x y-1
main :: IO()
main = print(pow 2 3)
pow x y = x * pow x y-1
あなたはそう思わないと思います。
pow x y = (x) * (pow x y) - (1)
^^^^^^^^^
infinite loop
ここで、無限ループをより明確に見ることができます。 (1) 'ではなく' X +(POW X(Y-1)) - あなたはy-1
、
pow x y = x * pow x (y-1)
ありがとう、これは理にかなっています) – Lazyexpert
確かに(+)ではなく、(*)=))) – Lazyexpert
@Lazyexpertはい、それは質問ではありませんでした:) – Rakete1111
'X + POWのX、Y-1 '意味'(X)+(POW XY)を括弧する必要'。 –