Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/03/2014, 17:58
Avatar de farfamorA
farfamorA
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 14 años
Puntos: 24
Respuesta: potencia por recursion no entiendo!

Cita:
Iniciado por aldo_rengo Ver Mensaje
hola me ayudan a entender que es lo que sucede.. aqui...


Código PHP:

 
/* Ejemplo - aprenderaprogramar.com */

//Clase que permite elevar un número entero m a otro número entero n y obtener un resultado

public class Exponenciador {

//Constructor

     
public Exponenciador () {

        
//Nada que declarar

    
}

    
//Método 1 para calcular la potencia

    
public int potenciaIterando (int mint n) {

        
int resultado 1;

        for (
int i=1i<=ni++) {

            
resultado resultado m;           

        }

        return 
resultado;

    } 
//Cierre del método

    //Método 2 para calcular la potencia

    
public int potenciaConRecursion (int mint n) {

        if (
n==0) { return 1;

        } else  { return 
potenciaConRecursion (mn-1); }

    } 
//Cierre del método

//Cierre de la clase 
no entiendo cuando usa este metodo "potenciaConRecursion" es un poco confuso..
supongamos que los parametros son 2 y 3
claramente el resultado da 8.
entra primero por el ELSE, como el n no es cero es "3"
y devuelve... 2 x ?

llama de nuevo al metodo con potenciaConRecursion (2, 2)...no?
Exacto, llama de nuevo al método con potenciaConRecursion(2, 2), de eso trata la recursividad.
Viéndolo matemáticamente, para calcular 2³ el método potenciaConRecursión lo haría así:
Primero el método va entrando recursivamente hasta obtener un valor:
2³ = 2 x 2²
2² = 2 x 2¹
2¹ = 2 x 2⁰
2⁰ = 1

y luego "sale", a partir del valor encontrado (2⁰ = 1), y lo utiliza recursivamente:

-> 2¹ = 2 x 2⁰ = 2 x 1 = 2
-> 2² = 2 x 2¹ = 2 x 2 = 4
-> 2³ = 2 x 2² = 2 x 4 = 8

No es muy necesario en este caso, te recomiendo revisar la Sucesión de Fibonacci y el código recursivo para calcular un término de esa sucesión. Ahí lo verás más claro y más útil.