Solución al reto de Ackerman

La definición de la función de Ackerman es es recursiva, por lo que se implementa un método recursivo que se llamará Ackerman, que acepte dos enteros y calcule la función. Como Ackerman se define para números no negativos, se lanzará una excepción si alguno de los dos parámetros es menor que 0. Luego, según los valores de m y n, se calcula el valor según la definición.

    public int ackerman(int m, int n) throws Exception {
        if (n < 0 || m < 0) {
            throw new Exception(“Parametros no validos”);
        }
        if (m == 0) {

            return n + 1;
        }

        if (n == 0) {
            return ackerman(m – 1, 1); // CUANDO EL CUERPO DEL IF CONTIENE UN
                                        // RETURN, MUCHAS VECES NO SE PONE ELSE
                                        // PARA LOS OTROS CASOS
        }
        return ackerman(m – 1, ackerman(m, n – 1));
    }

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s