给定0
和1
的有限列表,如何使用一阶函数将它们转换为整数值?
列表的头部是最低有效数字。例如,1011
评估为13
。
在这个问题上,我很难找到递归步骤和基本步骤,因为所有这些都取决于它是0和1。
编辑:
目标是定义一个函数,该函数将在给定二进制字符串的情况下计算十进制值。一个空列表应该返回0我猜,所以它将是基本情况。
答案 0 :(得分:2)
结束我的评论:
convert :: [Int] -> Int
convert [] = 0
convert (x : xs) = x + 2 * convert xs
基本案例是空列表,返回0
。
递归案例来自x
是最低有效数字的事实。 convert xs
(递归调用)为我们提供了列表尾部的结果;要获得整个列表的结果,我们需要乘以2(“移过”数字)并添加x
(0或1)。
答案 1 :(得分:0)
这是我对如何处理这种情况的初步想法。
REQUEST
{
person(id: "1") {
firstName
}
}
RESPONSE
{
"data": {
"person": {
"firstName": null
}
}
}
答案 2 :(得分:0)
假设输入是1
和0
s的列表。
bin2num :: [Int] -> Int
bin2num list = go list 0
where go [] _ = 0
go (x:xs) n = (x*(2^n)) + (go xs (n+1))