Haskell程序:将二进制转换为十进制
在Haskell中,我们可以使用`foldl`、递归和列表推导等函数将二进制数转换为十进制数。在第一个示例中,我们将使用`(binToDec = foldl (\acc x -> 2*acc + digitToInt x) 0)`;在第二个示例中,我们将使用基例`(binToDec "" = 0)`和递归情况`(binToDec (x:xs) = 2 * binToDec xs + digitToInt x)`函数;在第三个示例中,我们将使用`(binToDec = sum . zipWith (\x y -> 2^x * digitToInt y) [0..] . reverse)`。
算法
步骤1 - 导入Data.Char库。
步骤2 - 使用预定义函数及其表达式。
步骤3 - 程序执行将从`main`函数开始。`main()`函数控制整个程序的运行。它被编写为`main = do`
步骤4 - 初始化名为“input”的变量。它将保存要转换为相应十进制数的二进制数。
步骤5 - 函数调用后,使用`putStrLn`语句将结果十进制数打印到控制台。
示例1
在这个示例中,使用`foldl`函数定义了一个函数来将二进制数转换为十进制数。
import Data.Char (digitToInt) binToDec :: String -> Int binToDec = foldl (\acc x -> 2*acc + digitToInt x) 0 main :: IO () main = do let input = "1111" let decimal = binToDec input putStrLn $ "Decimal equivalent: " ++ show decimal
输出
Decimal equivalent: 15
示例2
在这个示例中,定义了一个递归函数来将二进制数转换为十进制数。
import Data.Char (digitToInt) binToDec :: String -> Int binToDec "" = 0 binToDec (x:xs) = 2 * binToDec xs + digitToInt x main :: IO () main = do let input = "1111" let decimal = binToDec input putStrLn $ "Decimal equivalent: " ++ show decimal
输出
Decimal equivalent: 15
示例3
在这个示例中,使用列表推导定义了一个函数来将二进制数转换为十进制数。
import Data.Char (digitToInt) binToDec :: String -> Int binToDec = sum . zipWith (\x y -> 2^x * digitToInt y) [0..] . reverse main :: IO () main = do let input = "1111" let decimal = binToDec input putStrLn $ "Decimal equivalent: " ++ show decimal
输出
Decimal equivalent: 15
结论
在Haskell中,可以使用递归、列表推导或`foldl`函数将二进制数转换为十进制数。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP