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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.