青少年编程知识记录 codecoming

求阶乘的方法

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



(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:C++知识 浏览: