Los algoritmos recursivos no son un recurso tan utilizado por los programadores, inclusive, también se plantean discusiones acerca de algoritmos iterativos vs. recursivos.

Independientemente de la preferencia de cada uno de los programadores, la idea de esta publicación es mostrar con un ejemplo sencillo una misma función "potencia" escrita de ambas formas.

Una función potencia, de forma iterativa se puede escribir de la siguiente manera:

int potencia ( int base, int exponente ) {
    long p=1;
    int i;

    for ( i=1 ; i<=exponente ; i++) {
        p*=base;
    }

    return(p);
}

Ahora, por definición, una función es recursiva cuando en su cuerpo hay un llamado a si misma.
Esta definición es perfectamente aplicable a la potenciación, pues: xy = x * (xy-1), por ejemplo:
24 = 2 * (23)
donde, 23 = 2 * (22)
donde, 22 = 2 * (21)
donde, 21 = 2 * (20)

Por lo tanto, esto se podría escribir de la siguiente manera:

int potencia( int base, int exponente) {
     if(exponente == 0) {
        return 1
     } else {
        return base * potencia(base, exponente -1) // llamada recursiva
     }
}

Tal vez este no sea el caso más representativo, pero una de las principales ventajas por las que se utilizan algoritmos recursivos es la por la disminución de la cantidad de líneas de código necesarias.

Vía: Nuevos Programadores