/* Ce qui suit n'est plus utile depuis la révision 4127, où ont été implémentés : factorial(Int n) et choose(Int n, Int k) mais cela reste un exemple intéressant du point de vue des possibilités de programmation. */ usepackage("siunitx", "locale=DE"); size(7cm,7cm,IgnoreAspect); // Fonction donnant la factorielle de n de façon itérative int factorielle_ite(int n) { if (n<=1) return 1; else { int f=1; for(int i=2;i<=n;++i) f=f*i; return f; } } // Fonction donnant la factorielle de n de façon récursive int factorielle_rec(int n) { if (n == 0) return 1; else return n * factorielle_rec(n-1); } int x=0,y=0; label("n",(x,y)); label("factorielle\_ite(n)",(++x,y+1)); label("factorial(n)",(x+=2,y+1)); for (int k=0; k<10; ++k) { x=0; --y; label(format(k),(x,y)); label(format("\num{%i}",factorielle_ite(k)),(++x,y)); label(format("\num{%i}",factorielle_rec(k)),(++x,y)); label(format("\num{%i}",factorial(k)),(++x,y)); } label("factorielle\_rec(n)",(--x,y-=2)); shipout(bbox(.2cm,Fill(palegreen)));