Recursive Functions



Recursion refers to the property of some concepts to be defined in terms of themselves.


In C++, recursion is achieved through functions that can call themselves. Recall that a function must be defined and then can be called. Recursion consists of the fact that in the definition of a function, the function itself is called. This call, which appears in the very definition of the function, is called a self-call. The first call, made in another function, is called the main call.


Example:

Let's write a C++ function that returns the factorial of a natural number passed as a parameter. The non-recursive (iterative) version is as follows:

int fact(int n)
{
    int p = 1;
    for(int i = 1 ; i <= n ; i ++)
        p = p * i;
    return p;
}

We observe that this function determines the correct result for values of n greater than or equal to 0 (small values, practically n <= 12). The function also correctly determines the result for n == 0.


A recursive version for determining n!, which uses the observations above, is:

int fact(int n)
{
    if(n == 0)
        return 1;
    else
        return n * fact(n-1);
}

Observations:


How to perform a self-call?

The self-call is made according to the header of the recursive function. Thus:


Examples:


Void function

void fact(int n, int &r)
{
    if(n == 0)
        r = 1;
    else{
        fact(n - 1 , r);
        r = r * n;
    }
}
int main()
{
    int a;
    fact(4, a);
    cout << a;
    return 0;
}

Non-void function

int fact(int n)
{
    int r;
    if(n == 0)
        r = 1;
    else
        r = n * fact(n - 1);
    return r;
}
int main()
{
    int a;
    a = fact(4);
    cout << a;
    return 0;
}

Accessibility Options

Color Contrast

Text Size

Text Spacing

Reading Aids