实现Bin函数,该函数以倒序的方式返回非负整数的二进制数!
的例子:
- Bin 0 == [] Bin 1 == [1]
- Bin 2 == [0,1]
- Bin 10 == [0,1,0,1]
Bin :: Integer -> [Int]
Bin 0 = []
Bin a `div` 2 = b
Bin a `mod` 2 = c
我想把我的除法结果返回给Bin函数并再次对其进行建模,等等。我怎么解决这个问题?能帮我一下吗?
只有一个参数,所以bin
的实现看起来像:
bin :: Integer -> [Int]
bin 0 = []
bin n = …
可以用divMod :: Integral a => a -> a -> (a, a)
确定模数并除以2,我们可以使用where
子句来设置变量d
和m
:
bin :: Integer -> [Int]
bin 0 = []
bin n = …
where(d, m) = divMod n 2
我们不能直接使用m
,因为这是Integer
而不是Int
,我们可以使用fromIntegral :: (Integral a, Num b) => a -> b
将Integer
转换为Int
。
m
是该列表的一个元素,并使用递归来确定列表的其他项。因此,…
部分应该构造这样的列表。我把这个留作练习。提示:您可以构建一个列表,其中x
作为第一项,xs
作为(x:xs)
的剩余项的列表。