Ejemplos de Recursividad C++ Elevar un número entero a otro

Función recursiva para calcular x elevado a y siendo x un número entero e y un número entero mayor o igual que 0.

La solución recursiva se basa en que si y = 0 entonces m^0 = 1  (caso base)

Si y > 0  Podemos calcular x^y  como  x * x^(y-1)

Por ejemplo: 

para los valores x = 2  y = 5
x^y => 2^5 = 2 * 2^4
El programa que calcula x elevado a y de forma recursiva es el siguiente.
La función recursiva que realiza el cálculo es la función potencia.

#include <iostream>
using namespace std;
double potencia(int, int);
int main()
{
    int x, y;
    cout << "Introduzca base: ";
    cin >> x;
    do
    {
        cout << "Introduzca exponente >=0 : ";
        cin >> y;
    }while(y<0);
    cout << x << " elevado a " << y << " = " << potencia(x,y) << endl;
    system("pause");
}
double potencia(int x, int y)
{
 if (y==0)
     return 1;
 else
     return x*(potencia(x,y-1));
}

La solución iterativa (no recursiva) del problema es la siguiente:
#include <iostream>
using namespace std;
double potencia(int, int);
int main()
{
    int x, y;
    cout << "Introduzca base: ";
    cin >> x;
    do
    {
        cout << "Introduzca exponente >=0 : ";
        cin >> y;
    }while(y<0);
    cout << x << " elevado a " << y << " = " << potencia(x,y) << endl;
    system("pause");
}
double potencia(int x, int y)
{
           double resultado=1;
           int i;
           for(i=1;i<=y;i++)
               resultado = resultado * x;
           return resultado;
}

2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Aqui hay un video que explica como hacer la potencia de un numero usando recursividad:
    https://www.youtube.com/watch?v=1xN-yeUhoJA&t=24s
    Saludos!!

    ResponderEliminar