pow函数中的无限循环
Infinite loop in pow function
我是 Haskell 的新手,我在这里遇到了一个无限循环,但我不知道为什么。
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
现在你可以更清楚地看到无限循环了。你需要用括号 y-1
,
pow x y = x * pow x (y-1)
我是 Haskell 的新手,我在这里遇到了一个无限循环,但我不知道为什么。
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
现在你可以更清楚地看到无限循环了。你需要用括号 y-1
,
pow x y = x * pow x (y-1)