/*************************************************************************************************************************************/
/* */
/* C A L C U L D E L A F O N C T I O N D E A C K E R M A N E N E N T I E R : */
/* */
/* */
/* Author of '$xtc/Ackerman.01$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 19991020120000). */
/* */
/*************************************************************************************************************************************/
#include <stdio.h>
int ackerman(m,n)
/* La fonction d'Ackerman est une fonction calculable (au sens de Turing), sans etre */
/* primitive recursive. Les fonctions 'f' de type "primitive recursive" sont definies */
/* par des formules du type : */
/* */
/* f(m1,m2,...,mk,0) = g(m1,m2,...,mk) */
/* f(m1,m2,...,mk,N+1) = h(m1,m2,...,mk,N,f(m1,m2,...,mk,N)) */
/* */
/* La fonction d'Ackerman croit beaucoup plus vite que toute exponentielle... */
int m;
int n;
{
if (m==0)
{
return(n+1);
}
else
{
if (n==0)
{
return(ackerman(m-1,1));
}
else
{
return(ackerman(m-1,ackerman(m,n-1)));
}
}
}
void main()
{
int NumberOfInputs;
int m,n;
/* Aguments de la fonction. */
printf("\n m=");
NumberOfInputs=scanf("%d",&m);
printf("\n n=");
NumberOfInputs=scanf("%d",&n);
printf("\n Ackerman(%d,%d) = %d\n",m,n,ackerman(m,n));
/* Quelques resultats de 'time' pour 'ackerman(4,1)' (soit m=4 et n=1) : */
/* */
/* CMAP27 cc 454.720u 0.400s 7:40.15 98.9% 0+0k 0+0io 84pf+0w */
/* CMAP27 cc -O3 400.100u 0.530s 6:52.56 97.1% 0+0k 0+0io 84pf+0w */
/* */
/* LACT27 cc -O3 465.5u 2.0s 8:08 95% 0+0k 0+0io 0pf+0w */
/* */
/* LACT29 cc 775.4u 0.4s 13:07 98% 0+0k 0+0io 0pf+0w */
/* LACT29 cc -O3 566.7u 0.3s 9:37 98% 0+0k 0+0io 0pf+0w */
/* */
/* Avantage a 'CMAP27' et a 'LACT27' sur 'LACT29' ! */
/* */
/* */
/* Nouveaux tests le 20041013143528 : */
/* */
/* LACT15 cc 109.020u 0.010s 1:51.19 98.0% 0+0k 0+0io 87pf+0w */
/* LACT15 cc -O3 107.410u 0.100s 1:49.41 98.2% 0+0k 0+0io 87pf+0w */
/* */
/* LACT16 cc 51.450u 0.010s 0:53.07 96.9% 0+0k 0+0io 87pf+0w */
/* LACT16 cc -O3 38.700u 0.040s 0:41.02 94.4% 0+0k 0+0io 87pf+0w */
/* */
/* sumix11 cc user=0m35.510s sys=0m0.010s */
/* sumix11 cc -O3 user=0m22.430s sys=0m0.020s */
/* */
/* */
/* Nouveaux tests le 20041208092321 : */
/* */
/* LACT17 cc 41.413u 0.008s 0:44.66 92.7% 0+0k 0+0io 0pf+0w */
/* LACT17 cc -O3 9.754u 0.001s 0:11.55 84.4% 0+0k 0+0io 0pf+0w */
/* */
/* */
/* Nouveaux tests le 20120104173549 : */
/* */
/* LACT18 $Cc 11.204u 0.000s 0:16.86 66.4% 0+0k 0+0io 0pf+0w */
/* */
/* */
/* Nouveaux tests le 20120104135847 : */
/* */
/* LACT19 $Cc 4.930u 0.000s 0:06.66 74.0% 0+0k 0+0io 0pf+0w */
/* */
/* */
/* Nouveaux tests le 20160811164523 : */
/* */
/* LACT19 $Cc 3.300u 0.010s 4:08.60 1.3% 0+0k 0+0io 0pf+0w */
/* LACT1A $Cc 2.184u 0.004s 3:48.42 0.9% 0+0k 0+0io 0pf+0w */
/* */
/* */
/* Nouveaux tests le 20210913082256 (ATTENTION : '$Cc' contient '-O3' sur '$LACT1B') : */
/* */
/* LACT19 $Cc 3.340u 0.000s 0:05.69 58.6% 0+0k 0+0io 0pf+0w */
/* LACT1B $Cc 11.557u 0.000s 0:14.07 82.0% 0+0k 0+0io 0pf+0w */
/* */
/* */
/* Nouveaux tests le 20211208115822 (ATTENTION : '$Cc' contient '-O1' sur '$LACT1B' et les */
/* tests sur '$LACT1B' ayant ete faits sur '/mnt/DisqueDur/home/colonna/tests/c.D', puis */
/* sur '/home/colonna/tests/c.D' -apres la bascule 'v $Fdirectories 20211208110726'-) : */
/* */
/* LACT19 $Cc 3.300u 0.010s 0:05.34 61.9% 0+0k 0+0io 0pf+0w */
/* LACT1B $Cc 11.577u 0.003s 0:13.26 87.2% 0+0k 0+0io 0pf+0w */
/* */
}