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

Re: [escepticos] Ackermann



Miguel Angel Velilla Mula wrote:
> 
> Eloy Anguiano wrote:
> >
> > Alfonso A. C. wrote:
> > >
> > > Hola Pedro.
> > >
> > > Pedro Maicas wrote:
> > > >
> > > >
> > > > long Ackerman(long m, long n)
> > > > {
> > > >    if(m == 0) return n + 1;
> > > >    if(n == 0) return Ackerman(m - 1, 1);
> > > >    return Ackerman(m - 1, Ackerman(m, n - 1));
> > > > }
> > > > MANDAMIENTO No 35: Siempre que puedas, usa funciones recursivas.

> > Como ya se ha dicho A(5,5) es un numero bestia y por tanto pocos numeros
> > de este tipo se pueden calcular, por tanto el recursivo es mas claro y
> > no hay demasiada perdida de tiempo.
 
> Apesar de ser contra el uso de recursividad en la programacion,
> reconozco que esta funcion no tiene como solucionarse sin usar
> recursividad, a no ser en casos especificos que se consiga una formula
> general para algunos tipos (por ej. m=1, m=2 etc).


A hojo e intentado ver cual es el maximo anidamiento en el caso A(4,1) y
es muy escaso porque rapidamente se reducen a valores del tipo A(m,0)
que cierran el anidamiento y no puede superar el orden de las decenas de
llamadas.

Cuatro bytes del CS y el IP y 8 de los parametros de paso (son dos
longs) son solo 12 que por varias decenas es del orden de los centenares
de bytes o a lo sumo de 1kb, pero no de 1Mb...



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