C语言求高精度N!问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 20:57:06
用C语言写,越简明越好,俺们新手,能加注释的话,再加分,谢谢各位长辈
注意下,N可能是10,也可能是1000,要能保证输出无损 例如,1000的阶乘有200多位数,,,,,

#include<stdio.h>
int main()
{
long int n,i,fac=1;

/* n是你输入的值,就是所要求的阶乘的值 */
/* i是控制循环的,比如3!,就是3×2×1,它们其实是一个以1为公差递减的等差数列 */
/* fac是用来寄存阶乘的值的,每循环一次就乘一次 */

printf("请输入n的值");
scanf("%ld",&n);
printf("\n");

for (i=n;i>=1;i--)
{
fac*=i;
}

printf("%ld!=%ld\n",n,fac);
printf("\n");

return 0;
}

# include<stdio.h>
void main()
{
int i,n;
int s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s*i;
printf("%d",s);
}

#include <stdio.h>
long int fun(int n)
{
if (n == 1) return 1;
else return (n*fun(n-1));//递归函数求阶乘
}
int main()
{
int x;
scanf("%d", &x);
printf("%ld\n", fun(x));//输出x!的值
return 0;
}