以下函数计算我可以将一个数字除以另一个的频率:

divs n p = if (n `mod` p == 0) then 1 + divs (n `div` p) p else 0


有写divs的更短方法吗?

最佳答案

divs n p = case n `divMod` p of (q,0) -> 1 + divs q p; _ -> 0


而且更有效率!请注意,quotRem的行为与负值有所不同,但效率仍然要高一点。

关于haskell - 计算我可以分割的频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7241098/

10-13 05:18