【发布时间】:2019-06-01 16:00:28
【问题描述】:
给定一个表示自然数和基数 >2 的数字列表,如何输出正确的自然数。即给定 [1,2,3] 和以 10 为底,我们得到 123。给定 [1,0,1] 和以 2 为底,我们得到 5。
有一些例子涵盖了使用 div 和 mod 将数字转换为列表,但我不知道如何做相反的事情(对于二进制数,对于小数来说,它很容易将数字列表直接转换为 int,但我假设有一种数学方法在这两种情况下都有效)。
--For decimal conversion:
fromDigits :: [Integer] -> Integer
fromDigits xs = aux xs 0
where aux [] acc = acc
aux (x:xs) acc = aux xs ((acc * 10) + x)
【问题讨论】:
-
嗯,你基本上已经有了所需的逻辑,这里只有一个常量应该用变量替换。
-
您已经为基数 10 编写了
fromDigits,因此只需将fromDigits xs替换为fromDigits 10 xs并将10更改为变量。同时更新类型
标签: haskell