中易网

c语言求n的阶乘 注意n可能很大阶乘可能会超过整数范围

答案:4  悬赏:0  
解决时间 2021-02-17 00:53
=============
最佳答案
对处理时间有要求?可以尝试预处理,用一个字符串数组(二位char类型数组也可)记录阶乘结果,
char str[200][100] ;//最大计算200! 数字最多100位
在str[0][]=1;
str[1][]=1;
str[2][]=2;
str[3][]=str[2][]*3;
str[4][]=str[3][]*4;.....这样计算就会很快;
然后你要做的是自己写一个大数据乘法,(字符串A 和字符串B 模拟两个数字相乘,如果你写不出来你就网上搜索一下大数据乘法C语言)
全部回答
#include int main() { int num; printf("input num"); scanf("%d",&num); int sum=1; for(int i=1;i<=num;i++) { sum=sum*i; } printf("%d",sum); }
long Fun(int n) { if(n==0 || n==1) { return 1; } return n*Fun(n-1); }
#include<stdio.h> #include<string.h> #include<stdlib.h> #define MAXLINE 20000 typedef struct tag_big_num{ int len; unsigned int *num; }bn; void init(bn *t); void print(bn *t); void add(bn *t,char *buf1); void init(bn *t){ t->len=1; t->num=(unsigned int *)malloc(MAXLINE*4); t->num[0]=1; } void print(bn *t){ int i=t->len-1; printf("%d",t->num[i]); i--; for(;i>=0;i--){ printf("%08d",t->num[i]); } printf("\n"); } void mul1(bn *t,int x){ int i,p,r; unsigned long long ll; for(i=t->len-1;i>=0;i--){ ll=t->num[i]*(long long )x; p=ll%100000000ll; r=ll/100000000ll; t->num[i]=p; t->num[i+1]+=r; } if(t->num[t->len])t->len++; } void main(){ bn result; init(&result); for(int x=1; x<=10000; x++) { mul1(&result,x); } print(&result); } 计算10000阶乘
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
加沿沟怎么去啊,有知道地址的么
牙齿矫正二类牵引会导致前牙唇倾吗?如题 谢
山西有没有方特乐园
左边一个每右边一个文叫什么
上墩背怎么去啊,有知道地址的么
显卡gtx850m和ati hd 7770d5哪个玩游戏好一些
宗教战争危害与举例 可以按例子里来说危害 越
日出时间加日落时间不等于24怎么办?为什么有
清凉洞我想知道这个在什么地方
请问我想接续养老保险,他们说我从1999年以前
不同压力等级的法兰不对应该怎么连接
我是北京本地人,在北京申请经济适用房或者限
TGP游戏助手总是加载不出来 清理完缓存以后
九牧厨卫这个地址在什么地方,我要处理点事
请问07款的濠沃车水温高怎么办。如果开空调水
推荐资讯
Monopsony是什么意思?
缕字问什么在拼音里打不出来
求超神学院 黑甲 第四集 《天使彦》
一个分数的分子比分母小14,如果分母加上4,
英语书面表达:假如你是广丰中学高三学生李华,
为什么刚办理的银行卡,扣扣绑定不了,
对于中国人来说,日文容易学还是英文容易学?
微电影是怎样产生的?
孙悟空的悟字怎么读呢
只要你用心,不愿你陪伴,这话的意思?
最新版的小米盒子没有数据线接口 没有快捷安
不小心把电脑管理员账号删掉了,只能登录普通
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?