#include
int npower(int m,int n);
int fact(int x);
void reverse(char str[], int n);
void stack_reverse(char str[],int n);
int main()
{
int result;
char str[9] = "abcdefghi";
result=npower(2,5);
printf("npower result=%d\n", result);
result=fact(5);
printf("factorial result=%d\n", result);
reverse(str, 9);
printf("\n");
stack_reverse(str, 0);
printf("\n");
return 0;
}
int fact(int x)
{
if(x==0)
return 1;
x=x*fact(x-1);
return x;
}
int npower(int m, int n)
{
int d;
if (n==0)
return 2;
m=m*npower(m, n-1);
printf("m=%d\n", m);
return m;
}
void reverse(char str[], int n)
{
if (n==-1) return; //This function prints backward as well as
char x; // as well as forward. Forward printing is
x=str[n]; //done by poping up characters from stack.
printf("%c", x);
reverse(str, n-1);
printf("%c", x);
}
void stack_reverse(char str[],int n)
{
char x;
if (n > 9) return; // backward printing is done by
x = str[n]; // poping up the characters from stack repeatedy.
stack_reverse(str, n+1);
printf("%c", x);
}
Compile and output:
$ gcc recurse.c
$ ./a.out
m=4
m=8
m=16
m=32
m=64
npower result=64
factorial result=120
ihgfedcbaabcdefghi
ihgfedcba