使用一阶函数将二进制字符串转换为整数值

时间:2017-05-27 13:14:32

标签: haskell functional-programming

给定01的有限列表,如何使用一阶函数将它们转换为整数值?

列表的头部是最低有效数字。例如,1011评估为13

在这个问题上,我很难找到递归步骤和基本步骤,因为所有这些都取决于它是0和1。

编辑:

目标是定义一个函数,该函数将在给定二进制字符串的情况下计算十进制值。一个空列表应该返回0我猜,所以它将是基本情况。

3 个答案:

答案 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)

假设输入是10 s的列表。

bin2num :: [Int] -> Int
bin2num list = go list 0
  where go []     _ = 0
        go (x:xs) n = (x*(2^n)) + (go xs (n+1))