elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Calcular potencia con una función recursiva
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Calcular potencia con una función recursiva  (Leído 20,537 veces)
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Calcular potencia con una función recursiva
« 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.


« Última modificación: 8 Abril 2012, 12:25 pm por DickGumshoe » En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Calcular potencia con una función recursiva
« Respuesta #1 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


En línea

Ahorrate una pregunta, lee el man
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Calcular potencia con una función recursiva
« Respuesta #2 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.
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Calcular potencia con una función recursiva
« Respuesta #3 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
En línea

Ahorrate una pregunta, lee el man
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Calcular potencia con una función recursiva
« Respuesta #4 en: 8 Abril 2012, 18:24 pm »

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

Gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Función recursiva de búsqueda.
Programación C/C++
APOKLIPTICO 1 2,634 Último mensaje 4 Junio 2010, 21:51 pm
por [D4N93R]
funcion recursiva de hijo a padre « 1 2 »
PHP
satan69 18 10,879 Último mensaje 30 Octubre 2010, 12:04 pm
por Xt3mP
Duda con función recursiva « 1 2 »
Programación C/C++
DickGumshoe 16 7,052 Último mensaje 8 Junio 2012, 05:02 am
por Ferno
calcular funcion edad con funcion fecha de nacimiento « 1 2 »
Programación C/C++
dragonlady 12 24,212 Último mensaje 28 Septiembre 2015, 22:37 pm
por 0xFer
Calcular Divisores, Forma recursiva
Java
konika_bn 0 3,089 Último mensaje 17 Noviembre 2015, 12:38 pm
por konika_bn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines