Wednesday, 13 March 2002

Recursive functions (using C)

#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