
I have to write a recurcive function without for or while
that prints all binary numbers from 0 to a given integer:
e.g. if the integer was 7 output is this:
(000)
(001)
(010)
(011)
(100)
(101)
(110)
(111)
Here's the code I have tried:
#include <stdio.h>
/* function declaration */
int print_binary_number(int decimalNo,int count,int arr[]);
int main ()
{
int a;
printf("\nPlease enter an integer:\n");
scanf("%d",&a);
print_binary_number(a,0,0);
return 0;
}
int print_binary_number(int decimalNo,int count,int arr[])
{
int binaryNo,remainder,factor = 1,c;
if (decimalNo == 0) {
return 0;
printf("000");
}
if(decimalNo != 0){
remainder = decimalNo % 2;
arr[count]=remainder;
binaryNo = (binaryNo + (remainder * factor));
factor = factor * 10;
print_binary_number(decimalNo - 1,count,arr);
c=1+print_binary_number(decimalNo / 2,count++,arr);
}
printf("%d",arr[count]);
return 0;
}