请教各路大侠怎样用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!

这程序怎样编写
...全文
447 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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;
}

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧