``````int ans, guess, random, type, counter, num, i;
char option, numb, input;

int power(int num)
{
ans=2;
if(num==0)
{
return(1);
}
if(num<0)
{
printf("incorrect input, please input a positive integer:");
return(0);
}

else
for(i=1; i!=num; i++)
{
return(ans=ans*2);
}
return(0);
}

int main()
{
/*before this there is all the switch case stuff*/
case 1 :
/*powers of 2 calculator*/
printf("please enter a positive integer:\n");
fgets(numb, sizeof(numb), stdin);
sscanf(numb, "%d",&num);
break;

ok so the origional was:
case 1 :
/*powers of 2 calculator*/
printf("please enter a positive integer:\n");
fgets(numb, sizeof(numb), stdin);
sscanf(numb, "%d", &num);
ans=2;
if(num<0)
printf("incorrect input, please input a positive integer:");
if(num==0)
printf("the answer is 1\n");
for(i=1; i!=num; i++)
ans=ans*2;
printf("The answer is %d\n", ans);
break;``````

and i had to take that and turn it into a recursive function. IDK what recursion is other than "it calls itself" or something... anyway im lost on this.

here is the recursive code for calculating power of 2;

``````int power(int num)
{
if(num==0)
return 1;
if(num==1)
return 2;
return 2*power(num-1);
}
``````

well after including this function in ur prog, u dont need to check whether the input value is 0 or 1. but check for -ve entry..

here is ur modified switch statements ...

``````case 1 :
/*powers of 2 calculator*/
printf("please enter a positive integer:\n");
fgets(numb, sizeof(numb), stdin);
sscanf(numb, "%d", &num);
//ans=2;
if(num<0)
printf("incorrect input, please input a positive integer:");
else{
ans=power(num);
printf("The answer is %d\n", ans);}
break;
``````
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.