/************************************************/
/* soubor FACT_RST.C				*/
/* faktorial rekursi se statickou promennou	*/
/************************************************/
#include <stdio.h>

double fact(long n)
{
 static int h;
 double navrat;
 printf("hloubka=%4d\tn=%4ld\n", ++h, n);
 if (n == 0l)
   navrat = 1.0F;
 else
   navrat = n * fact(n-1);
 printf("hloubka=%4d\tn=%4ld\tnavrat=%.0lf\n", h--, n, navrat);
 return navrat;
}

int main(void)
{
 static long n;
 printf("\nPro vypocet faktorialu zadej prirozene cislo n:");
 scanf("%ld", &n);
 printf("%ld! = %lf\n", n, fact(n));
 return 0;
}
/*
Pro vypocet faktorialu zadej prirozene cislo n:4
hloubka=   1	n=   4
hloubka=   2	n=   3
hloubka=   3	n=   2
hloubka=   4	n=   1
hloubka=   5	n=   0
hloubka=   5	n=   0	navrat=1
hloubka=   4	n=   1	navrat=1
hloubka=   3	n=   2	navrat=2
hloubka=   2	n=   3	navrat=6
hloubka=   1	n=   4	navrat=24
4! = 24.000000
*/