Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DickGumshoe en 8 Abril 2012, 01:35 am



Título: Calcular potencia con una función recursiva
Publicado por: DickGumshoe en 8 Abril 2012, 01:35 am
Hola.

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

Código
  1. 7
  2. int potencia(int x, int n)
  3. {
  4.    if(n == 0) return 1;
  5.  
  6.    else if (n % 2 == 0) return potencia(x*x, n/2);
  7.  
  8.    else return x * potencia(x, n-1);
  9. }

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.


Título: Re: Calcular potencia con una función recursiva
Publicado por: durasno en 8 Abril 2012, 02:54 am
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


Título: Re: Calcular potencia con una función recursiva
Publicado por: DickGumshoe en 8 Abril 2012, 12:42 pm
Muchas gracias por responder.

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

Código
  1. int func(int x, int n)
  2. {
  3.     if(n==1) return x;
  4.     else return x*func(x,n-1);
  5.  }

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.

Código
  1. int potencia(int x, int n)
  2. {
  3.    if(n == 1) return x;
  4.  
  5.    else if (n % 2 == 0) return potencia(x*x, n/2);
  6.  
  7.    else return x * potencia(x, n-1);
  8. }

Gracias.

Saludos.


Título: Re: Calcular potencia con una función recursiva
Publicado por: durasno en 8 Abril 2012, 18:19 pm
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


Título: Re: Calcular potencia con una función recursiva
Publicado por: DickGumshoe en 8 Abril 2012, 18:24 pm
EDITO: Ya encontré el error. Era una tontería!

Gracias.