改自
https://blog.csdn.net/qq_39445165/article/details/88377252?utm_source=app&app_version=5.1.1&code=app_1562916241&uLinkId=usr1mkqgl919blen
using System;
namespace Factorial
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("请输入n的值:");
int n = Convert.ToInt32(Console.ReadLine());
int[] arr = new int[n * 4];
arr[0] = 1;
int lastLength = 0;//(n-1)数组的长度
for(int i = 1; i <= n; i++)
{
int carryBit = 0;//进位暂存
for (int j = 0; j < lastLength; j++) //(n-1)!
{
arr[j] = arr[j] * i + carryBit;
carryBit = 0;//进位清零
if (arr[j] >= 10)
{
carryBit = arr[j] / 10;
arr[j] = arr[j] % 10;
}
}
int cur = arr[lastLength] * i + carryBit;
while (cur >= 10)
{
arr[lastLength++] = cur % 10;
cur /= 10;
}
arr[lastLength] = cur;
}
Console.WriteLine("{0}的阶乘为:",n);
for (int k = lastLength; k >= 0; k--)
{
Console.Write(arr[k]);
}
Console.ReadLine();
}
}
}