- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Haskell Program to convert the Binary number to Gray code using recursion

In Haskel we can use recursion along with helper function toconvert the Binary number to Gray code. In the first example, we are going to use base case, (grayCode "" = "" and grayCode [x] = [x]) and recursive case, grayCode (x:y:xs) = x : grayCode (xs ++ [if x == y then '0' else if x == '0' then '1' else '0'])). Where as in the second example, we are going to use two helper functions along with recursion.

## Method 1: Converting the Binary number to Gray Code using recursion

In this method, the grayCode function is defined to handle three cases −

When the input string is empty, the function returns an empty string.

When the input string has only one character, the function returns the string unchanged.

When the input string has two or more characters, the function takes the first two characters, x and y, and uses them to calculate the next character in the Gray code. If x and y are equal, the next character is '0'. If x is '0', the next character is '1'. Otherwise, the next character is '0'. The function then recursively calls itself with the rest of the string (xs), and the result of this recursive call is appended to the current character..

### Algorithm

**Step 1**− The user defined, grayCode function is defined with base and recursive case as,

grayCode "" = "" grayCode [x] = [x] grayCode (x:y:xs) = x : grayCode (xs ++ [if x == y then '0' else if x == '0' then '1' else '0']).

**Step 2**− Program execution will be started from main function. The main() function has whole control of the program. It is written as main = do.In the main function, a variable n is defined with the value "1101100111", and the result of grayCode n is printed to the console. The output will be the Gray code representation of the binary number n.**Step 3**− The variable named, “n” is being initialized. It will hold the numbers which is to be converted to gray code from binary.**Step 4**− The resultant gray code number is printed to the console using ‘print’ function after the function is called.

### Example 1

In this example, we define a function grayCode that converts a binary number to its corresponding Gray code representation using recursion.

grayCode :: String -> String grayCode "" = "" grayCode [x] = [x] grayCode (x:y:xs) = x : grayCode (xs ++ [if x == y then '0' else if x == '0' then '1' else '0']) main :: IO () main = do let n = "1101100111" print (grayCode n)

### Output

“1010100010”

## Method 2: Converting the Binary number to Gray Code using recursion with the help of two helper function

In this method, the grayCode function handles the case when the input string has only one character, and returns the string unchanged. When the input string has two or more characters, the function takes the first character and passes it, along with the rest of the string, to the grayCodeR function. The grayCodeR function calculates the next character in the Gray code representation using the current character and the previous character. If the current character and the previous character are equal, the next character is '0'. If the current character is '0', the next character is '1'. Otherwise, the next character is '0'. The function then recursively calls itself with the rest of the string and the current character as the previous character.

### Algorithm

**Step 1**− The user defined, grayCode function is defined with base and recursive case as,

grayCode "" = "" grayCode [x] = [x] grayCode (x:xs) = x : grayCodeR (xs, x).

**Step 2**− The helper functions are defined as,

grayCodeR ("", prev) = "" grayCodeR ([x], prev) = [if x == prev then '0' else '1'] grayCodeR (x:xs, prev) = (if x == prev then '0' else '1') : grayCodeR (xs, x).

**Step 3**− Program execution will be started from main function. The main() function has whole control of the program. It is written as main = do. In the main function, a variable n is defined with the value "1101100111", and the result of grayCode n is printed to the console. The output will be the Gray code representation of the binary number n.**Step 4**− The variable named, “n” is being initialized. It will hold the numbers which is to be converted to gray code from binary.**Step 5**− The resultant gray code number is printed to the console using ‘print’ function after the function is called.

### Example 1

In this example, the recursive grayCode function uses two helper functions, grayCode and grayCodeR, to convert the binary number to its corresponding Gray code representation.

grayCode :: String -> String grayCode "" = "" grayCode [x] = [x] grayCode (x:xs) = x : grayCodeR (xs, x) grayCodeR :: (String, Char) -> String grayCodeR ("", prev) = "" grayCodeR ([x], prev) = [if x == prev then '0' else '1'] grayCodeR (x:xs, prev) = (if x == prev then '0' else '1') : grayCodeR (xs, x) main :: IO () main = do let n = "1101100111" print (grayCode n)

### Output

“1010100010”

## Conclusion

In Haskell, the conversion of binary number to gray code number can be implemented using a recursive function that takes a binary number represented as a string, and returns its corresponding Gray code representation as a string. The function can perform the XOR operation on the bits and shift the binary number to the right, until all the bits have been processed.

- Related Articles
- C++ Program to convert the Binary number to Gray code using recursion
- Binary to Gray code using recursion in C program
- Haskell Program to convert the decimal number to binary using recursion
- Python Program to Convert Gray Code to Binary
- Python Program to Convert Binary to Gray Code
- Swift program to convert the decimal number to binary using recursion
- 8085 program to convert gray to binary
- Program to convert gray code for a given number in python
- 8085 program to convert binary numbers to gray
- Python Program to Generate Gray Codes using Recursion
- Conversion of Binary to Gray Code\n
- Conversion of Gray Code to Binary\n
- Haskell program to convert a decimal number into a binary number
- 8085 code to convert binary number to ASCII code
- Haskell Program to Find Factorial of a Number Using Recursion