2016-09-03 3 views
0

저는 하스켈을 처음 접했고 무한 루프가 발생했습니다. 그러나 왜 그런지 모르겠습니다.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) 

아이디어가 있으십니까?

+2

'X + 펑의 x 및 y-1' 방법이 필요 '. –

답변

8
pow x y = x * pow x y-1 

당신이 생각하는대로하지 않습니다.

pow x y = (x) * (pow x y) - (1) 
       ^^^^^^^^^ 
       infinite loop 

이제 무한 루프를보다 명확하게 볼 수 있습니다. (1)`이 아닌`X + (펑 X (Y-1)) - 당신은`(X) + (펑 XY), y-1을 괄호로하는

pow x y = x * pow x (y-1) 
+0

고마워요.이 말이 맞습니다.) – Lazyexpert

+0

그리고 확실히 (+)가 아니지만 (*) =))) – Lazyexpert

+0

@Lazyexpert 네,하지만 그건 질문이 아닙니다 :) – Rakete1111