算一下我分裂的频率

foo*_*bar 2 recursion haskell integer division

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

divs n p = if (n `mod` p == 0) then 1 + divs (n `div` p) p else 0
Run Code Online (Sandbox Code Playgroud)

是否有更短的写作方式divs

小智 5

我的变体是:

factors :: Integral i => i -> i -> Int
factors f =
    length . takeWhile (== 0) .
    map (`mod` f) . iterate (`div` f)
Run Code Online (Sandbox Code Playgroud)

迭代/映射模式对许多问题非常有用.