最基本的一种做法,数据类型为 unsigned long int 型,可以求到32 ,从33开始就溢出了。要想求比较大的数的阶乘该怎么办?
另:如果不用递归的办法,那该怎么求阶乘,我想了半天,居然一点思路也无!!还是请高手指点一下迷津吧。// n的阶乘递归版
//2004-07-14
//=================
//函数:unsigned long int digui( unsigned long int x )
//入口参数:unsigned long int x 需要求阶乘的值
//返回值:价乘值
//=================
#include <iostream.h>
#include <math.h>
unsigned long int digui( unsigned long int x );
void main()
{
int n;
cout << "please input a number: ";
cin >> n ;
cout << endl ;
cout << n << " 的阶乘为:";
cout << digui( n ) << endl;
}unsigned long int digui( unsigned long int x )
{
//cout << "this is digui function , the x is :" << x << endl;
if ( x==0||x==1 ) return 1;
if ( x>1 ) return x*digui( x-1 );}
另:如果不用递归的办法,那该怎么求阶乘,我想了半天,居然一点思路也无!!还是请高手指点一下迷津吧。// n的阶乘递归版
//2004-07-14
//=================
//函数:unsigned long int digui( unsigned long int x )
//入口参数:unsigned long int x 需要求阶乘的值
//返回值:价乘值
//=================
#include <iostream.h>
#include <math.h>
unsigned long int digui( unsigned long int x );
void main()
{
int n;
cout << "please input a number: ";
cin >> n ;
cout << endl ;
cout << n << " 的阶乘为:";
cout << digui( n ) << endl;
}unsigned long int digui( unsigned long int x )
{
//cout << "this is digui function , the x is :" << x << endl;
if ( x==0||x==1 ) return 1;
if ( x>1 ) return x*digui( x-1 );}
解决方案 »
- 将windows media player作为ActiveX控件添加在对话框上,在怎么写相应的打开视屏文件等操作啊?
- VC调用nero sdk的问题!!高分!!!!!!!
- 写了下面一段代码,不知道为什么在GetDC()的时候就发生中断,第一次遇到不知道是 为什么请高手指教??
- 是我见识短还是写代码的人有问题?
- 关于DockControlBar和EnableDocking
- bluebohe和bcpl进来 每人100分 表示你们对我做DLL时的斑竹。
- 谁有完成 系统 AT 命令得代码?给我一份好吗?
- cpp文件和h文件在语法上的区别
- 请教打开文件的问题
- 一个关于MCI编程的问题
- char name[256]的初值该怎么设置?
- 请问:VC7中能找到VC6中的这一菜单项(Project/Add To Project/Components and Controls...)吗?
*/
#include <stdio.h>
#include <conio.h>
main()
{
int i,j,k,r,data,temp;
int aa[40];
k=1;
printf("\nEnter an interager:");
scanf("%d",&data);
for (i=0;i<40;i++)
aa[i]=0;
aa[0]=1;
for (i=1;i<=data;i++)
{
for (j=0;j<k;j++)
aa[j]*=i;
for (j=0;j<k;j++)
if (aa[j]>=10)
{
if (aa[k-1]>=10)
k++;
aa[j+1]+=aa[j]/10;
aa[j]%=10;
}
printf("\n%d!=",i);
for(j=k-1;j>=0;j--)
printf("%d",aa[j]);
}
printf("\nEnter a key to resume . . .");
getch();
}
void main()
{int i,n;
long double N;
cout<<"输入一个整数:";
cin>>n;
if(n==1)
N=1;
else
{N=1;
for(i=2;i<=n;i++)
N=N*i;
}
cout<<N<<endl;
}阶乘,实在太大了.
高精运算目前不会,不过,你要是讲一讲我一准会。
故到32!左右出错,在VC下,int类型占用4个字节,
就没有这个问题了,(当然足够大时还会溢出),
故到32!左右出错,在VC下,int类型占用4个字节,
就没有这个问题了,(当然足够大时还会溢出),