C program to convert a decimal number to a binary number using recursion
This C program is to convert a decimal number to a binary number using recursion.For example, 9(DECIMAL) —> 1001(BINARY).
Logic
We include one base case i.e. when we converge towards zero we have finished our program so we need to exit and a non base case i.e. do mod 2(as it is binary) and add 10.
Dry Run of the Program
Take input as n=4
We enter function decimal_binary()
int decimal_binary(int n)
n=4
if(n==0) false
else
return ((n%2)+10*decimal_binary(n/2)); i.e return ((0)+10*decimal_binary(2)); as n=4
A recursive call[decimal_binary(2)]
if(n==0) false
else
return ((n%2)+10*decimal_binary(n/2)); i.e return ((0)+10*decimal_binary(1)); as n=2
A recursive call[decimal_binary(1)]
if(n==0) false
else
return ((n%2)+10*decimal_binary(n/2)); i.e return ((1)+10*decimal_binary(0)); as n=1
A recursive call[decimal_binary(0)]
if(n==0) true
return 0;
So now we will have
1+0 = 1 … decimal_binary(1)
0+10*1 = 10 …decimal_binary(2)
0+10*10 = 100 …decimal_binary(4) ….final answer
Program
#include <stdio.h> int decimal_binary(int n) { if (n==0) return 0; else return ((n%2)+10*decimal_binary(n/2)); } void main() { int no; printf("Enter a decimal number\n"); scanf("%d",&no); printf("Decimal(%d) = Binary(%d)\n",no,decimal_binary(no)); }