Como nota, si desea simplemente utilizar el formulario cerrado, entonces los algoritmos para m < 4 son sencillos. Si desea extender a la tetration, le sugiero que escriba un algoritmo de potencia rápida probablemente utilizando el método binario y luego con ese método puede escribir una función de tetration. ¿Qué sería algo como:
int Tetration(int number, int tetrate)
{
long int product=1;
if(tetrate==0)
return product;
product=number;
while(tetrate>1)
{
product=FastPower(number,product);
tetrate--;
}
return product;
}
A continuación, puede abarcar los casos hasta n == 4 y después de eso utilizar la definición recursiva y los valores de un desbordamiento (5, n) a una velocidad ridícula, así que es realmente de ninguna preocupación. Aunque su profesor probablemente no estará satisfecho con un algoritmo como este, pero se ejecutará mucho más rápido. En una de mis clases discretas cuando pedí escribir un algoritmo para calcular los números de Fibonacci y luego encontrar su O (n), escribí la forma cerrada y luego escribí O (1) y obtuve todo el crédito, algunos profesores aprecian las respuestas inteligentes.
Lo que es importante tener en cuenta acerca de la función Ackerman es que define esencialmente la heiraquía de las funciones aditivas en los enteros, A (1, n) es suma, A (2, n) es multiplicación, A (3, n) es exponenciación, A (4, n) es tetration y después de 5 las funciones crecen demasiado rápido para ser aplicables en gran medida.
Otra manera de mirar en suma, multiplicación, etc es:
Φ0 (x, y) = y + 1
Φ1 (x, y) = +(x, y)
Φ2 (x, y) = ×(x, y)
Φ3 (x, y) = ↑ (x, y)
Φ4 (x, y) = ↑↑ (x, y)
= Φ4 (x, 0) = 1 if y = 0
= Φ4 (x, y + 1) = Φ3 (x, Φ4 (x, y)) for y > 0
(utiliza la notación de prefijo es decir + (x, y) = x + y, (x, y) = x y.
este chico sabe lo que hace. –