potencia en recursiva

Hoy vamos a poner un ejemplo sencillo de recursividad en C/C++. Se trata de algo muy sencillo pero extraordinariamente util en la programacion de funciones matematicas, se trata de nada más y nada menos que la potencia, todos sabemos que dentro de la libreria math se pueden hacer potencias casi de cualquier tipo pero lo que con este ejercicios queremos demostrar es que por recursividad podemos tener cualquier base y cualquier exponente.

//Lo priemro como siempre es cargar las librerias que nos puedan hacer falta.
#include <stdio.h>

//Declaramos la potencia que nos va a servir como recursiva, fijaros que le pasamos dos enteros pero devuelve un numero largo, esto es para previsionar un posible fallo por un numero demasiado alto.
long potencia(int,int);

void main()
{

int x=0,y=0;//La declaracion de las variables que nunca nos puede faltar en C

printf ("\nIntroduzca la base -> ");//se saca por pantalla la peticion de una base.
scanf ("%d",&x);//y con esto lo recojemos, fijaros que solo aceptamos numeros enteros, y se lo pasamos a la variable "X"

printf ("\nintroduzca la potencia -> ");
scanf ("%d",&y);



printf ("\nel resultado es igual a %ld\n\n\n",potencia(x,y));//Esto es interesante, si os fijais imprimimos una funcion y no una variable esto es debido a que cuando lee la funcion la ejecuta una vez pasandoles las dos variables anteriores.

};


long potencia (int x,int n)//Como siempre cargamos la funcion y sus variables, se han cambiado los nombres para que veais que no hace falta que sean los mismos.
{

if (n>0)//Con la setencia if hacemos que se ejecute la primera sentencia si es cierta y si es falsa pasara al else ejecutando la segunda sentencia.
return potencia (x,n-1)*x;//con return lo que hacemos es salir de la funcion dando el resultado de lo que esta detras de ella.
else
return 1;

};