Calcular potencia con una función recursiva

Iniciado por DickGumshoe, 8 Abril 2012, 01:35 AM

0 Miembros y 1 Visitante están viendo este tema.

DickGumshoe

Hola.

He estado intentando calcular potencias mediante una función recursiva. Este ha sido mi resultado (es erróneo, pero no sé por qué).

7
int potencia(int x, int n)
{
   if(n == 0) return 1;
   
   else if (n % 2 == 0) return potencia(x*x, n/2);
   
   else return x * potencia(x, n-1);
}


Para llegar a plantearlo, he tomado en cuenta que:

- x^n = (x * x) ^ n/2 (siendo n > 0 y un número par)

- x^n = x * x^(n-1)

Muchas gracias.

Saludos.

durasno

Hola! no entendi nada las formulitas q te armaste. Lo que tenes que hacer es retornar "x" y a "n" lo usas para saber cuantas veces tenes que multiplicar "x" por si mismo

int func(int x, int n)
{
     if(n==1) return x;
     return x*func(x,n-1);
  }

Saludos
Ahorrate una pregunta, lee el man

DickGumshoe

Muchas gracias por responder.

No sé por qué, no sale ni con lo que pusiste:

int func(int x, int n)
{
     if(n==1) return x;
     else return x*func(x,n-1);
  }


Ni con mi código editado (lo que he hecho ha sido en el primer if devolver x, porque antes no sé por qué puse que devolviera 1.

int potencia(int x, int n)
{
    if(n == 1) return x;
   
    else if (n % 2 == 0) return potencia(x*x, n/2);
   
    else return x * potencia(x, n-1);
}


Gracias.

Saludos.

durasno

Que raro q no funcione, a mi me anda perfecto. Ademas compile lo que vos pusiste y tambien me compila bien. ¿en que compilas? Por las dudas subi todo el codigo

Saludos
Ahorrate una pregunta, lee el man

DickGumshoe

EDITO: Ya encontré el error. Era una tontería!

Gracias.