C语言中,写函数,求一个整数的阶乘
1个回答
展开全部
如图
可以求到20的阶乘,源码请看网页端。如图,如有疑问或不明白请追问哦!
源代码:
#include <stdio.h>
typedef __int64 LONG; //自定义64位长整型,用 LONG 表示
typedef char BYTE; //自定义8位短整型,用 BYTE 表示
LONG factorial(BYTE n){ //求n的阶乘,由于阶乘增长非常快,所以能求的n有限。除非用自定义大数据类型
LONG fact=1,last;
if(n<0)return -1; //负数的阶乘不能这么算,返回-1表示错误
for(; n>1 ;n--){
last=fact; //记录上次求得的结果
fact *= n;
if(fact <= 0){ //正常来说fact必>0,否则一定发生了溢出。若此阶乘会发生溢出,也一定会有fact<=0
//printf("fact=%I64d\tn=%d \n",fact,n);
return -1; //如果值溢出则返回-1
}
}
return fact;
}
int main()
{
BYTE n=0,count=0;
LONG fact=1;
for(; n< 0x7f ; n++){ //从0到 BYTE 型最大数
count++;
fact=factorial(n);
if(fact!=-1) //仅当未溢出时显示
printf("fact(%d)=%I64d \n",n,fact);
}
printf("count=%d\n",count); //表示溢出
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询