1
下面的代碼在某些情況下給我一個堆棧溢出錯誤(例如hosum (\x->x `mod` 3) 1000
),我不明白爲什麼。任何人都可以向我解釋這個嗎? (我是Haskell的新手,我很感激任何幫助:))haskell程序中的無限循環
hosum :: (Int -> Int) -> (Int -> Int)
hosum f = (\x -> hs f x (- x))
where hs :: (Int -> Int) -> Int -> Int -> Int
hs f 0 0 = f 0
hs f n m
| m <= n
= f m + hs f n (m+1)
| n <= m
= f n + hs f (n+1) m
| otherwise
= 0
好的,我明白了。非常感謝你:) –
我第二次刪除'hs f 0 0'的情況。看起來很有趣,作爲一個基本的例子,當每個遞歸調用中'n,m'增加_(增加1)。 – chi