【发布时间】:2018-01-29 03:28:05
【问题描述】:
我正在做一个 Haskell 练习题,其中涉及编写一个函数,如果 2 将偶数次除以参数 num,则该函数返回 true。例如,如果 num 是奇数,则返回 True,因为 2 除以 0 次,而 0 是偶数。 8 作为参数返回 False,因为 2 分为 3 次,而 3 是奇数。 我知道如何使用两个参数来解决这个问题,其中第二个参数是一个计数器,并且你将第一个参数除以 2 直到等于 1,如果计数器 mod 2 == 0,则返回 True。但是我们应该只用一个数字作为参数来做到这一点,......那我该怎么做呢? 我的功能,
isGreen :: Int -> Int -> Bool
isGreen num count
| (num==1)&&(count `mod` 2 == 0) = True
| (num==1)&&(count `mod` 2 /= 0) = False
| otherwise = isGreen (div num 2) (count + 1)
【问题讨论】:
-
你甚至可以直接用
countTrailingZeros来判断,是不是在这个问题的范围内? -
@chepner 8=2^3,8能被4整除,但不是绿色数