求阶乘的方法
1.普通求法
C++
#include<iostream>
using namespace std;
int main(){
int sum=1;
int n;
cin>>n;
for(int i=1;i<=n;i++){
sum=sum*i;
}
cout<<sum;
return 0;
}
2.递归法
C++
#include<iostream>
using namespace std;
int fact(int n){//定义阶乘函数
if(n==1) return 1;//输入的参数是1,直接返回1
else return n*fact(n-1);//递归算法
}
int main(){
int x;
cin>>x;
x = fact(x);//调用函数返回int值
cout<<x;
return 0;
}
3.递推法
C++
//使用递推思想,求解正整数的阶乘
//本算法的数学模型为 n! = (n - 1)! * n
#include <iostream>
using namespace std;
int fact(int n)
{
int m[100]; //假设求100以内整数的阶乘
m[1] = 1; //递推的起始值
for(int i = 2; i <= n; i++)
m[i] = m[i - 1] * i;
return m[n]; //返回递推的终值
}
int main()
{
int n;
cin >> n;
cout<< fact(n) <<endl;
return 0;
}
4.高精度求法
C++
#include<iostream>
#include<cstring>
using namespace std;
int a[100000];
int main()
{
int n;
int i,j;
cin>>n;
a[0]=1,a[1]=1;
for(i=1;i<=n;i++)//高精乘
{
for(j=1;j<=a[0];j++)
a[j]*=i;
for(j=1;j<=a[0];j++)
{
a[j+1]+=a[j]/10;
a[j]%=10;
}
if(a[j]>0)//进位处理
{
while(a[j]>10)
{
a[j+1]+=a[j]/10;
a[j]%=10;
j++;
}
a[0]=j;
}
}
for(i=a[0];i>=1;i--)
cout<<a[i];
return 0;
}
阅读剩余的35%
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。