例 8.8用递归方法求n!。
求n!可以用递推方法,即从1开始,乘2,再乘3……
一直乘到n。这种方法容易理解,也容易实现。递推法的特点是从一个已知的事实出发,按一定规律推出下一个事实,再从这个新的已知的事实出发,再向下推出一个新的事实……这是和递归不同的。
求n!··也可以用递归方法,即5!等于4!×5,而4!=3!×4…1!=1。可用下面的递归公式表示:
n!=1(n=0,1)
n·(n-1)!(n>1)
有了例7.7的基础,很容易写出本题的程序:
float fac(int n)

 float f;
 if(n<0){ printf("n<0,dataerror!");f=-1;}
 else if(n==0‖n==1) f=1;
 else f=fac(n-1)*n;
 return(f);

main()

  int n;
 float y;
 printf("input a integer number:");
  scanf("%d",&n);
 y=fac(n);
 printf("%d!=%15.0f",n,y);

运行情况如下:
input a integer number:10
10!= 3628800.