一个循环嵌套有关问题?

一个循环嵌套问题??/*数的阶层*/longfac(intn){longfif(n0||n1)return1elsereturn(fac(n-1)*n)}mai

一个循环嵌套问题??
/*数的阶层*/
long   fac(int   n)
{     long   f;
      if   (n==0||n==1)   return   1;
      else   return   (fac(n-1)*n);}
main()
{int   n;
  long   y;
  printf( "n= ");
  scanf( "%d ",&n);
  if(n <0)   printf( "n <0,data   error! ");
  else   {   y=fac(n);
  printf( "%d!=%ld ",n,y);}
getch();
}

其中:long   fac(int   n)
{     long   f;
      if   (n==0||n==1)   return   1;
      else   return   (fac(n-1)*n);}
这段代码中     函数fac是如何实现乘法累加的?
                        return有是如何返回的?
请各位大虾们帮帮小弟,谢了

[解决办法]
自己举个数去推理啊,例如n=4时,(fac(n-1)*n);=4*fac(4-1)=4*fac(3)=4*3*fac(2)
=4*3*2fac(1)
=4*3*2*1=24
[解决办法]
简单的递归程序,一般C语言教材上都会有的.
去看递归程序那一节就可以弄懂了.