使用遞迴查詢給定數字的反轉的Haskell程式
在Haskell中,我們可以使用遞迴和輔助函式來查詢給定數字的反轉。在第一個例子中,我們將使用(reverseNumHelper n rev)函式,在第二個例子中,我們將使用(reverseNum n | n < 10 = n| otherwise = (n `mod` 10) * (10 ^ numDigits (n `div` 10)) + reverseNum (n `div` 10))函式。
使用遞迴和輔助函式查詢給定數字的反轉
在這種方法中,reverseNumHelper函式接受兩個引數:n和rev。n是要反轉的數字,rev是到目前為止反轉的數字。該函式使用累加器rev來跟蹤到目前為止反轉的數字。該函式重複取n的最後一位數字(n mod 10),將其新增到rev乘以10 (rev * 10 + (n mod 10)),然後將n除以10 (n div 10)以獲得剩餘的數字。
演算法
步驟1 − 使用輔助函式定義使用者自定義的遞迴反轉數字函式,其定義如下:
reverseNumHelper n rev | n == 0 = rev | otherwise = reverseNumHelper (n `div` 10) (rev * 10 + (n `mod` 10)) .
步驟2 − 程式執行將從主函式開始。main()函式控制整個程式。它被寫成main = do。在主函式中,透過向其傳遞引數來呼叫使用者自定義的遞迴函式。
步驟3 − 變數“num”被初始化。它將儲存要列印其反轉的數字。
步驟4 − 函式呼叫後,使用‘show’函式將反轉後的數字列印到控制檯。
示例1
在這個例子中,使用輔助函式reverseNumHelper來反轉數字。reverseNum函式充當包裝器,它用n作為第一個引數,0作為第二個引數呼叫reverseNumHelper。
reverseNum :: Integer -> Integer reverseNum n = reverseNumHelper n 0 reverseNumHelper :: Integer -> Integer -> Integer reverseNumHelper n rev | n == 0 = rev | otherwise = reverseNumHelper (n `div` 10) (rev * 10 + (n `mod` 10)) main :: IO () main = do let num = 12345 let reversedNum = reverseNum num putStrLn (show reversedNum)
輸出
54321
使用遞迴查詢給定數字的反轉
在這種方法中,reverseNum函式使用遞迴來反轉數字,首先將n的最後一位數字(n mod 10)乘以10的冪,該冪等於n剩餘數字的位數(10 ^ numDigits (n div 10))。然後遞迴計算剩餘數字的反轉(reverseNum (n div 10))並將其新增到結果中。
演算法
步驟1 − 使用者自定義的遞迴反轉函式定義如下:
reverseNum n | n < 10 = n | otherwise = (n `mod` 10) * (10 ^ numDigits (n `div` 10)) + reverseNum (n `div` 10).
步驟2 − 使用者自定義的numDigits函式定義如下:
numDigits n | n < 10 = 1 | otherwise = 1 + numDigits (n `div` 10).
步驟3 − 程式執行將從主函式開始。main()函式控制整個程式。它被寫成main = do。在主函式中,使用者自定義的遞迴函式被反覆遞迴呼叫,並向其傳遞引數。
步驟4 − 變數“num”被初始化。它將儲存要列印其反轉的數字。
步驟5 − 函式呼叫後,使用‘show’函式將反轉後的數字列印到控制檯。
示例1
在這個例子中,使用了兩個函式reverseNum和numDigits。reverseNum函式接受一個整數引數n並返回其反轉。numDigits函式接受一個整數引數n並返回n的位數。
reverseNum :: Integer -> Integer reverseNum n | n < 10 = n | otherwise = (n `mod` 10) * (10 ^ numDigits (n `div` 10)) + reverseNum (n `div` 10) numDigits :: Integer -> Integer numDigits n | n < 10 = 1 | otherwise = 1 + numDigits (n `div` 10) main :: IO () main = do let num = 12345 let reversedNum = reverseNum num putStrLn (show reversedNum)
輸出
54321
結論
數字的反轉是由反向讀取原始數字的數字形成的新數字。例如,數字12345的反轉是54321。
在Haskell中,可以使用遞迴反轉數字。遞迴允許找到簡潔優雅的解決方案。這是一種用基本情況和遞迴情況定義函式的方法。這些函式可以接受任何數字作為引數,並將相同數字的反轉返回到控制檯。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP