Función de Ackermann

Manuel García

/* Este programa calcula el valor de la función de Akermann, de dos argumentos naturales (x,y), que se define de la siguiente manera: A(1,0)=2; A(x,0)=x+2, si x>=2; A(0,y)=1, si y>=0;    A(x,y)=A(A(x-1,y),y-1) si x,y>=1 */

#include<iostream>
#include<stdlib.h>
using namespace std;

double funcion_A (double x, double y);

int main()

{
    double x, y, valor;

    do{cout << “Introduce un numero natural \”x\” “;
    cin >> x;} while (x<0);
    do{cout << “Introduce otro numero natural \”y\” “;
    cin >> y;} while (y<0);

    valor=funcion_A(x,y);

    cout << endl << “El valor de la funcion de Ackermann para esos valores es ” << valor << endl << endl;

system(“pause”);
return 0;

}

double funcion_A(double x, double y)

{
    if (x==1 && y==0)
    return 2;
    if (x>=2  && y==0)
    return x+2;
    if (x==0 && y>=0)
    return 1;
    return funcion_A(funcion_A(x-1,y),y-1);
}

Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Una respuesta a Función de Ackermann

  1. Observa que esta función crece muy rápidamente y de hecho por ejemplo A(4,4) ya es incapaz de calcularlo, aparte del desbordamiento de llamadas que pueda producir la propia recursión.

Deja un comentario

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