当前位置:首页 > C++目录 > 正文内容

求阶乘的方法

亿万年的星光5年前 (2021-05-01)C++目录2193

1.普通求法

#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.递归法

#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.递推法

//使用递推思想,求解正整数的阶乘
//本算法的数学模型为 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.高精度求法

#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;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

2021CSP-J/S全国晋级二轮分数线公布

普及组CSP-J序号省市CSP-J人数CSP-J晋级晋级比例最高分晋级最低分1甘肃13413399.25%86152宁夏10310198.06%65243天津46345197.41%8615.54云南...

指针(二):指针与数组

1.指针与数组的关系    指向数组的指针变量称为数组指针变量。“数组是内存上一块连续的空间”。数组名就是这块连续空间的首地址。2.指针指向数组  &...

【图】并查集—优化

【图】并查集—优化

上一篇文章,简单介绍了并查集。这篇文章,介绍一下并查集的改进以及优化。find函数的优化(路径压缩)因为并查集的merge操作:void merge(int a, int...

指针(一):基础用法

1.定义什么是指针,简单来说:“指针就是地址”。2.指针变量的定义指针变量定义形式:  类型说明符  *变量名其中,*号表示指针变量。变量名即为定义的指针变量名,类型说明符表示该指...

判断闰年

代码参考:#include<iostream>  using namespace std; //判断闰年的函数  int leap(...

组合数的写法

前面我们写过 全排列和排列数 等。这篇文章。我们写一下组合数。例题:从n个数中,选出m个,一共有多少种不同的选法?这是一道典型的组合数公式。我们直接用dfs公式肯定会出现重复的。#include<...