[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [escepticos] Ackermann



Alfonso A. C. wrote:
> 
> Hola Mig.
> 
> Miguel Angel Velilla Mula wrote:
> >
> > La funcion recursiva de Ackerman es asi:
> >
> >          | n+1             , para m = 0
> > A(m,n) = | A(m-1,1)        , para n = 0
> >          | A(m-1,A(m,n-1)) , para los otros casos
> >
> > Por ejemplo:
> >
> > A(0,0) = 1
> > A(1,0) = 2
> > A(2,0) = 3
> > A(1,1) = A(0,A(1,0)) = A(0,2) = 3
> >
> > etc etc....
> >
> > Estuve tratando de calcular manualmente A(10,10) pero me dio suenho.
> > Alguien en la lista que sea bueno en C puede hacer un programita
> > recursivo y me pasa el resultado manhana?
> >
> > Gracias
> >
> > Mig
> 
>         No soy bueno, simplemente "lo hablo un poco" ;-)
> 
>         Te envio el codigo en C adjunto en este mensaje (bueno, c++, diferencia
> minima pues simplemente es por gusto, el definir los contadores dentro de los
> bucles).
> 
>         Para compilarlo, en unix-linux :
> 
>         gcc -o Ackermann Ackermann.cc
> 
>         No he volcado los resultados en fichero ni nada de eso, asi que para ver los
> resultados pon:
> 
>         Ackermann >Ackermann.txt
> 
>         Espero te sea util (hay mas modos de hacerlo, entre ellos con parametros de
> entrada para pedirle solo un valor, convertirlo en funcion y demas, pero creo
> que con esto tienes lo que pediste con el menor costo posible) :-)
> 
>         Un saludo.
> 
>         P.D.
> 
>         Compila tb. en DOS y WINDOWS y demas basuras operativas, pero como yo voy en
> Linux, pues eso te indico.
> 
>         Si hay algun problema, avisad caballero.
> 
> --
> Alfonso A.C. (Fonso en el irc)
> email: aafonso en mx3.redestb.es
> www: http://personal.redestb.es/aafonso
> 
>   ------------------------------------------------------------------------
> #include <stdio.h>
> 
> void main()
> {
>   long int resultados[100][100];
> 
>   for (int m=0;m<100;m++)
>   {
>     for (int n=0;n<100;n++)
>     {
>        if (m==0) resultados[m][n]=n+1;
>        else if (n==0) resultados[m][n]=resultados[m-1][1];
>        else resultados[m][n]=resultados[m-1][resultados[m][n-1]];
>        printf("M=%d, N=%d , Resultado:%d\n",m,n,resultados[m][n]);
>     }
>   }
> }


Alfonso, que eres informatico.

A ver deberes. Si la funcion es recursiva hagase el codigo recursivo.
Queda muuuucho mas potito.




-- 
/-----------------------------------\
|  Eloy Anguiano Rey                |
|  Dpto. Ing. Informatica           |
|  U.A.M.                           |
\-----------------------------------/