C++编程:从键盘输入一个正整数n,编程计算n!
3个回答
展开全部
容我说句实话,楼上两位的代码只能算比较小的阶乘,比如 100! 就算不出了。
我是用数组来实现大数的阶乘,代码如下:
#include<iostream>
#include<deque> // 利用双端队列保存计算结果的每一位
using namespace std;
int main()
{
deque<int> a;
a.push_back(1);
a.push_back(1);
int n,top = 1;
cout << "Input n: ";
cin >> n;
for(int i = 1; i <= n; i++)
{
for(int j=1; j <= top;j++)
a[j] *= i;
for(int j = 1; j <= top; j++)
{
if(a[j]>10)
{
for(int r = 1; r <= top; r++)
{
int tmp = a[r] / 10;
a[r] = a[r] % 10;
if(r+1 == a.size())
{
if(tmp == 0)
break;
else
{
a.push_back(tmp);
top++;
break;
}
}
a[r+1] += tmp;
}
}
}
}
cout << n <<"! = ";
for(int j = top ; j > 0; j--)
cout << a[j];
cout << endl;
return 0;
}
PS:上面的代码是我前些时写的,所以没有注释.
这位兄弟将代码拿去跑一遍就知道了,结果是正确的
我是用数组来实现大数的阶乘,代码如下:
#include<iostream>
#include<deque> // 利用双端队列保存计算结果的每一位
using namespace std;
int main()
{
deque<int> a;
a.push_back(1);
a.push_back(1);
int n,top = 1;
cout << "Input n: ";
cin >> n;
for(int i = 1; i <= n; i++)
{
for(int j=1; j <= top;j++)
a[j] *= i;
for(int j = 1; j <= top; j++)
{
if(a[j]>10)
{
for(int r = 1; r <= top; r++)
{
int tmp = a[r] / 10;
a[r] = a[r] % 10;
if(r+1 == a.size())
{
if(tmp == 0)
break;
else
{
a.push_back(tmp);
top++;
break;
}
}
a[r+1] += tmp;
}
}
}
}
cout << n <<"! = ";
for(int j = top ; j > 0; j--)
cout << a[j];
cout << endl;
return 0;
}
PS:上面的代码是我前些时写的,所以没有注释.
这位兄弟将代码拿去跑一遍就知道了,结果是正确的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream.h>
int f(int n)
{
if(n==0)
return 1;
else
return n*f(n-1);
}
void main()
{
int n;
cin>>n;
cout<<f(n)<<endl;
}
int f(int n)
{
if(n==0)
return 1;
else
return n*f(n-1);
}
void main()
{
int n;
cin>>n;
cout<<f(n)<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream.h>
void main()
{
int n,sum=1;
cin>>n;
while(n>0)
{
sum=sum*n;
n--;
}
cout<<sum;
}
void main()
{
int n,sum=1;
cin>>n;
while(n>0)
{
sum=sum*n;
n--;
}
cout<<sum;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询