原理简单来说就是数组每单元存放9位数字多于9位的当作进位处理乘法把每单元当作平常一位数运算看待即可。普通的INT类型10万数组每元素存9位数约容纳90万位数如果把尾部0移出来的话容纳更多位数尾部0可以使用科学计数法表示尾部0移出将在运算过程中同时进行数组位移暂时做到100000!乘法且尾部0暂时未写移位10万数组9位约能运算到186121!以本例来说移出约5万个0则约5万90万总约可容纳95万位数据尾部0移出后可运算到195370!1E46521。void INT类大数阶乘(int j) { int mo 1e9, ds[100000]{}, n 0, je 1, jw 0, x 99999, wi x; _int64 ji 0; ds[99999] 1; while (ds[0] 0 je j)// je mo { while (ds[x] 0 || x wi)//尾部0运算 { ji ds[x]; ji * je; ji jw; jw 0;//必须赋值出来否则变为INT类型 if (ji mo) { ds[x] ji % mo; jw ji / mo; } else ds[x] ji; --x; if (wi x) wi x; else; } if (jw 0) { ds[x] jw; jw 0; } else; x 99999; je; } cout --je ! wi :; je 0; while (wi 1e5) if (ds[wi] 0 || jw 0) if (jw 0) if (ds[wi] 0){ cout setw(9) setfill(0) ds[wi], wi; } else if (ds[wi] 0){ je, wi; } else { wi, cout x_x; } else { cout ds[wi], wi, jw; } else wi; cout \t0的位数 je*9 \n; }if (ds[x] 0)//尾部0位移 { while (yi 0 yi wi)ds[yi] ds[yi - 1], --yi; kj; yi 99999; } else;//195370.48834 186120.5170.46521 186121.46521void INT类大数阶乘(int j) { int mo 1e9, ds[100000]{}, n 0, je 1, jw 0, x 99999, wi x, kj 0, yi 0; _int64 ji 0; ds[99999] 1; while (ds[0] 0 je j je mo)// { while (ds[x] 0 || x wi)//尾部0运算 { if (yi 0 x 0) ds[x] ds[x - yi]; else;//位移 ji ds[x]; ji * je; ji jw; jw 0;//必须赋值出来否则变为INT类型运算 if (ds[x] 0)cout x_x; else; if (ji mo) { ds[x] ji % mo; jw ji / mo; } else ds[x] ji; --x; if (wi x) wi x; else; } if (jw 0) { ds[x] jw; jw 0; if (ds[x] 0||ds[x] mo)cout x_x; else; } else; x 99999; je; if (ds[x] 0) { kj; yi 1; } else yi 0;//尾部0位移 } cout --je ! wi 序0的位 kj * 9 数; je 0; while (wi 1e5) if (ds[wi] 0 || jw 0) if (jw 0) if (ds[wi] 0){ cout setw(9) setfill(0) ds[wi], wi; } else if (ds[wi] 0){ je, wi; } else { wi, cout x_x; } else { cout ds[wi], wi, jw; } else wi; cout \t0的位数 je * 9 \n; }借用递归法求n的问题为什么我写的程序到13以后计算结果就不对了-编程语言-CSDN问答例子核对我的程序1000!是否正确每行0的个数80个。LONG64 双阶乘(int a) {//以简洁代码提高阶乘效率 if (a 0)return -1; // 表示输入错误 LONG64 aaa 1; int aa 0; sjc:if (a 2 aa a - aa) { aaa * (a - aa) * aa; goto sjc; } if (aa a - aa) aaa * aa; if (aaa * a 0)return -1; // 处理溢出例如返回 -1 表示错误//if (aaa* a LLONG_MAX) return aaa * a; }该算法优化可实现20阶乘同上述程序对比结果一样。不用听AI胡诌。20阶乘数据位数超过了9位数可以证明使用数组存储9位数处理理论正确代码正确。