用c++求n的阶乘

 我来答
afeihito
2011-05-26 · TA获得超过945个赞
知道小有建树答主
回答量:371
采纳率:100%
帮助的人:148万
展开全部
我就简单写个吧;
int n = 5; //比如求5的阶乘
int result = 1;
for(int i=1; i<=n; i++)
{
result *= i; //在这里设一个断点,可以观察每一次循环的结果,加深对阶乘的了解
}
//循环完成后,result就是结果

楼上用的是递归的方法。初入门的话,可能看起来有点难度。
呵呵,慢慢来吧,学C++,一定要回递归的。
聽說1990
推荐于2016-02-07 · TA获得超过195个赞
知道小有建树答主
回答量:71
采纳率:0%
帮助的人:82.6万
展开全部
package test;

public class TempTest {
/**
* 我用的是java 机子上没有c++的环境
* 你可以做一些修改,直接把函数里面的代码贴到你自己建立的空函数里面就可以了。
* 把System.out.println(answer);改成"cout<<answer<<'\n'"
* */
public static void main(String[] args) {
//从这行开始复制
int n=100;
//切记要从1开始 answer 的类型用int的时候,n太大的话可能会不够用出现为0的情况
double answer=1;
//第一种 用for循环
for(int i=1;i<=n;i++){
answer*=i;
}
System.out.println(answer);

//第二种do while循环
//像前置的++ -- 后置的++ -- 这一类的东西。搞不懂就直接用+1 -1 加个括号什么的。
answer=1;
do{
answer*=n;
}
while((--n)>0);
System.out.println(answer);
}
//到这行为止都贴进去
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自由的菜鸟
2011-05-27 · TA获得超过2736个赞
知道大有可为答主
回答量:1657
采纳率:0%
帮助的人:1299万
展开全部
int factorial(int n)

{

int a[1000]; //确保保存最终运算结果的数组足够大

int carry;//进位

int digit = 1;//位数

a[0] = 1;//将结果先初始化为1

int temp;//阶乘的任一元素与临时结果的某位的乘积结果

int i,j;

for(i = 2; i <= n; ++i)//开始阶乘,阶乘元素从2开始依次“登场”

{//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘

for(j = 1, carry = 0; j <= digit; ++j)

{

temp = a[j-1] * i + carry;//相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)

a[j-1] = temp % 10;//更新临时结果的位上信息

carry = temp / 10; //看是否有进位

}

while(carry)//如果有进位

{

a[++digit-1] = carry % 10;//新加一位,添加信息。位数增1

carry /= 10;//看还能不能进位

}

}

printf("结果是:\n%d ! = ",n);//显示结果

for(i = digit; i >=1; --i)

{

printf("%d",a[i-1]);

}

return 0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuyunfengfan
2011-05-26 · TA获得超过123个赞
知道答主
回答量:130
采纳率:0%
帮助的人:115万
展开全部
#include<iostream>
using namespace std;
#define N 1000
int main()
{ int n, m,i,j,c,t;
int *a;
a=new int[N];
cin>>n;
a[0]=1;
m=1;
for(i=2;i<=n;i++)
{ for(c=0,j=0; j<m;j++)
{ t=a[j]*i+c;
a[j]=t%10;
c=t/10;}
while(c)
{ a[m++]=c%10;
c=c/10;}
}
cout<<"n!=";
for(j=m-1;j>=0;j--)
cout<<a[j];
cout<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0白桦树0
2011-05-26 · TA获得超过787个赞
知道小有建树答主
回答量:651
采纳率:0%
帮助的人:385万
展开全部
高精度运算吧,不然有可能溢出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式