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`函式將二進位制數轉換為十進位制數。
廣告