首先看一个简单的使用递归算法的n!程序:
#include<iostream>
using namespace std;
long fac(int);
int main(){
int n;
cout<<"请输入数字n,将输出n!:"<<endl;
cin>>n;
long y=fac(n);
cout<<y<<endl;
return 0;
}
long fac(int n){
long f;
if(n<0){
cout<<"errro,请输入正数!!"<<endl;
return -1;
}
else if(n==0)
return 1;
else if(n==1) return 1;
f=n*fac(n-1);
return f;
}
显然,这个程序中的n是有上限的,当long占8字节的时候,f的取值范围是 -9223372036854775808~9223372036854775807;
所以诸如计算1000!的值是不可以用上述程序求解的。
当然,</