-
Función de Ackerman
Ey ey buenas! para el lunes tengo un problema, tengo que programar la función de Ackerman con el programa Mathematica usando listas (vectores) y for, while o ambos.
Es una función muy extraña que no se usa para nada salvo para tocar las narices a los matemáticos e informáticos en algunos contraejemplos, y que si veis la tabla de valores que hay en el enlace de más abajo de la wikipedia observaréis que toma valores altísimos para m y n pequeños, lo que hace que el algoritmo sea realmente lento (probad los valores {m=4,n=2} y veréis jeje, tiene casi 20.000 cifras, que sólo en imprimirlo en pantalla podréis imaginar lo que tarda). Aquí os la dejo escrita para que la tengáis y a ver si me podéis echar una mano, please:
A[0, n_Integer?Positive] := n + 1;
A[m_Integer?Positive, 0] := A[m - 1, 1]
A[m_Integer?Positive, n_Integer?Positive] := A[m - 1, A[m, n - 1]]
No sabía en qué apartado postear esto y lo he posteado aquí porque el c++ lo entiendo, así que si me queréis escribir en c++ el código también me vale.
Más información sobre esta función en la wikipedia: [Only registered and activated users can see links. [Los usuarios sin registrar no pueden ver los enlaces click AQUI para registrarte]]
Gracias, y para quien le guste la programación puede ser un pequeño reto ;)
-
Bueno, por si a alguien le interesa, que lo hice y al parecer lo hice "medianamente bien" usando listas, pero no funcionaba en el caso más sencillo, precisamente en el primero o al pasar del segundo al primero, no lo tengo muy claro. En fin, lo entregué más o menos... Estoy esperando la respuesta del profesor a ver si me lo corrige.