主题:求1000以内任意数的阶乘
qiang106
[专家分:0] 发布于 2006-04-10 22:27:00
这道题可以说是非常经典的一题了,我也知道要用数组来完成这一个程序,但有些东西还是想不清楚,请知道的兄弟给我讲讲!
回复列表 (共7个回复)
沙发
啥都不会 [专家分:320] 发布于 2006-04-26 18:57:00
参见我blog的文章: 阶乘的算法
http://sniper167.bokee.com
板凳
jiangfeng [专家分:110] 发布于 2006-05-12 19:53:00
用什么语言实现呀
3 楼
zhpmy [专家分:70] 发布于 2006-05-14 00:34:00
也不知道兄弟是哪方面想不清楚,我就依我的想法编了个程给兄弟参考,下面的很简单,相信可以搞懂的:
#include<stdio.h>
void main()
{
int n;
double f(int a),fact; //声明函数f(),定义变量fact用于存放f()返回的值。
printf("输入要求的数:\n");
scanf("%d",&n);
fact=f(n);
printf("%d的阶乘为%.0f!\n",n,fact);
}
double f(int a) //函数调用
{
if(a==1)
return(1);
else
return a*f(a-1);
}
4 楼
boxertony [专家分:23030] 发布于 2006-05-19 14:41:00
[quote]也不知道兄弟是哪方面想不清楚,我就依我的想法编了个程给兄弟参考,下面的很简单,相信可以搞懂的:
#include<stdio.h>
void main()
{
int n;
double f(int a),fact; //声明函数f(),定义变量fact用于存放f()返回的值。
printf("输入要求的数:\n");
scanf("%d",&n);
fact=f(n);
printf("%d的阶乘为%.0f!\n",n,fact);
}
double f(int a) //函数调用
{
if(a==1)
return(1);
else
return a*f(a-1);
}[/quote]
是你没有看清出楼主的题目。1000!不是你的程序可以算出来的
5 楼
liangbch [专家分:1270] 发布于 2007-04-28 17:21:00
可以看看这个网站( blog.csdn.net/liangbch), 内有大数阶乘的最详尽的算法讨论和代码。
6 楼
longxiujiang [专家分:60] 发布于 2007-05-01 08:12:00
#include "iostream.h"
void main()
{
int n,i,m=0,x;
cin>>n;
ff:x=1;
for(i=1;i<=1000;i++)
x=x*i;
m=m+x;
if(n>1)
{
n--;
goto ff;
}
cout<<m<<endl;
}
7 楼
jay---yu [专家分:60] 发布于 2007-05-11 21:15:00
这是转载一个高手写的……
**********************************************************************************************************
#include <stdio.h>
int main(void)
{
int Data[10000];
int digit;
int i,j,r,k;
int N;
for(i=1;i<10000+1;i++)
Data[i]=0;
Data[0]=1;
Data[1]=1;
digit=1;
printf("Enter a number what you want to calculus:");
scanf("%d",&N);
for(i=1;i<N+1;i++)
{
for(j=1;j<digit+1;j++)
Data[j]*=i;
for(j=1;j<digit+1;j++)
{
if(Data[j]>10)
{
for(r=1;r<digit+1;r++)
{
if(Data[digit]>9)
digit++;
Data[r+1]+=Data[r]/10;
Data[r]=Data[r]%10;
}
}
}
}
printf("%d!=",N);
for(k=digit;k>0;k--)
printf("%d",Data[k]);
return 0;
}
我来回复