请教各路大侠怎样用C++编写n! 也就是 n的阶乘

chenjingquan911 2004-05-08 08:30:46
例如 编写程序
1+x-x*x/2!+x*x*x/3!...+(-1)(的n+1次幂)x*x*x*x*x.../n!

这程序怎样编写
...全文
371 12 点赞 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shinco 2004-06-27
呵呵,试一试用模板?
先做一个泛化版本,然后写一个特化版本,这样,一切计算可以在编译期就OK了
  • 打赏
  • 举报
回复
insulator 2004-06-27
我们前几天的微机课程设计就有上道题目是计算n!,他的要求是计算0-0FFFF的阶乘
我们班只有我一人做了这一题,老师都没要我答辩就给了我一个优。
  • 打赏
  • 举报
回复
nscboy 2004-06-27
其实求n!的关键不是算法,而是怎样存储一个大的整数,比尔100位的,还要对它进行乘法和加法的运算.
否则,你只能计算出一个不超过40亿的n!来.也就是n<13.即使你使用__int64
也不过不会超过20(n<21)
  • 打赏
  • 举报
回复
chena224503 2004-06-23
楼上的,你用数学的方法解出来。
循环都不用,还用递归吗?
  • 打赏
  • 举报
回复
shantang1984 2004-06-21
不应该用递归吧,应该先用数学的方法把结果的表达式求出来。

用递归方便呀
  • 打赏
  • 举报
回复
xiaozhangxiang 2004-06-21
#include <iostream.h>
void main()
{
int m;
int sum=1;
cout<<"please input m:";
cin>>m;
for(int i=1;i<=m;i++)
sum=sum*i;
cout<<"m!=:"<<sum<<endl;
return;
}
  • 打赏
  • 举报
回复
Leaveye 2004-06-21
对于给定的X,在程序中插入这段代码:
float res, mul;
for(res = 1.0, mul = 1.0, i = 1; i <= n; i++)
{
res += mul *= X / (float)i;
}
//运行至此,res就是结果。
  • 打赏
  • 举报
回复
chena224503 2004-06-21
不应该用递归吧,应该先用数学的方法把结果的表达式求出来。
  • 打赏
  • 举报
回复
yy1361 2004-06-21
你先给分!
  • 打赏
  • 举报
回复
despird 2004-05-09
补充一下
if(n==0) 这里应该是if(n<=0),负数的阶乘是有意义的,和0一样,都为1
  • 打赏
  • 举报
回复
whalefish2001 2004-05-09
#include<iostream.h>
double x;
double f(int n)
{
if(n==0) return 1;

int i;
double j=-1;
for(i=n;i>=1;i--)
j*=(-x)/i;
return f(n-1)+j;
}

void main()
{
int n;
cout<<"输入X 和 N "<<endl;
cin>>x>>n;
cout<<f(n);
return ;
}
楼主看的懂吗?
以后建议楼主多看看书。
  • 打赏
  • 举报
回复
zhouqingyuan 2004-05-08
n!应该很好求啊,直接按照定义来就可以了
long f(int n)
{
if(n==0) return 1;
else
return f(n-1)*n;
}
  • 打赏
  • 举报
回复
相关推荐
发帖
非技术区
加入

1.5w+

社区成员

C/C++ 非技术区
申请成为版主
帖子事件
创建了帖子
2004-05-08 08:30
社区公告
暂无公告