Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C programming - Convert the two methods below to be defined recursively. long bi

ID: 3722301 • Letter: C

Question

C programming - Convert the two methods below to be defined recursively.

long binaryToDecimal(char s[])
{
   int n = strlen(s);
   long ans = 0, t=1;
   int i=0;

   for(i=n-1; i>=0; i--)
   {
       if(s[i] == '0')
       {
           t *= 2;
       }
       else if(s[i] == '1')
       {
           ans = ans + t;
           t *= 2;
       }
       else
       {
           return 99999;
       }
   }
   return ans;
}

.

int* decimalToBinary(char s[])
{

  
   long num = stringToLong(s);


   if(num == -98765)
   {
       return NULL;
   }
   if(num > 65535)
   {
       return NULL;
   }

  
   int* arr;
   arr = (int*)malloc(16*sizeof(int));

   int i;

   for(i =15; i>=0; i--)
   {
       arr[i] = num%2;
       num /= 2;
   }
   return arr;
}

Explanation / Answer

here is your functions : ----------->>>>>>>>

long binaryToDecimal(char s[],int i = 15){
if(i == 0){
  if(s[i] == '0'){
   return 0;
  }else{
   long int n = 1;
   for(int j = 0;j<15;j++){
    n = n*2;
   }
   
   return n;
  }
  
}

long int ans;
if(s[i] == '0'){
  ans = 0;
}else{
  long int n= 1;
  for(int j = 0;j<(15-i);j++){
   n = n*2;
  }
  ans = n;
}
ans = ans + binaryToDecimal(s,--i);
return ans;
}
int* decimalToBinary(char s[],long int l = -1,int *arr = new int[16],int i = 15){
if(i == 15){
  l = stringToLong(s);
}
if(i == 0){
  arr[i] = l%2;
  return arr;
}
if(l%2 == 0){
  arr[i] = 0;
}else{
  arr[i] = 1;
}
l = l/2;
decimalToBinary(s,l,arr,--i);
return arr;
}