c语言怎样用递归求n!

#include<stdio.h>
long fac(int n)
{if(n==1) return 1L; /*“1L”为长整型常量*/
else return n*fac(n-1);}
void main()
{int m;
scanf("%d",&m);
printf("%2d!=%d\n",m,fac(m));}看看为什么不行

这个程序应该是对的,不知道你是编译出错了,还是这么回事。
scanf("%d",&m);这句里面的”,“是中文的符号,应该换成”,“。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-07
scanf("%ld",&m);
第2个回答  2011-01-07
还有一个问题是:0! = 1
if( ( n==1 ) || (n == 0) )
第3个回答  2011-01-07
程序没错,但要注意你是要计算多少数的阶乘,如果10以上的阶乘,要注意溢出
假如要计算15以上的阶乘,就有可能要用到高精度乘法,你这个程序只能计算普通比较少的数的阶乘
相似回答