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.
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
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.
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
EDITO: Ya encontré el error. Era una tontería!
Gracias.