在求99 的阶乘的时候出现结果为零
#include <iostream>
using namespace std;
int func(int n){
unsigned long a;
if(n<0)
cout<<"n<0,数据错误"<<endl;
else
if(n==0||n==1)
a=1;
if(n>1)
a=func(n-1)*n;
}
int main(){
int n;
unsigned long q;
for(;;)
{
system("cls");
cout<<"请输入要求阶乘的数"<<endl;
cin>>n;
q=func(n);
cout<<n<<"的阶乘为:"<<q<<endl;
system("pause");
}
return 0;
}
结果太大啦,哪是一个int能行的啊。用double吧,long long也不够的
#include <iostream>
using namespace std;
double func(int n){
if(n<0)
{
cout<<"n<0,数据错误"<<endl;
return 0;
}
else if(n==0||n==1)
return 1;
return func(n-1)*n;
}
int main(){
int n;
double q;
for(;;)
{
system("cls");
cout<<"请输入要求阶乘的数"<<endl;
cin>>n;
q=func(n);
cout<<n<<"的阶乘为:"<<q<<endl;
system("pause");
}
return 0;
}
两个问题:
(1)func函数,你没有返回值(没有return 语句)
(2)99的阶乘很大,超出int类型范围,需要改成double类型
代码修改如下:
#include <iostream>
using namespace std;
double func(int n)
{
double a;
if(n<0)
{
cout<<"n<0,数据错误"<<endl;
return 0;//这里的返回值根据题目来定
}
else
{
if(n==0||n==1)
a=1;
else
a=func(n-1)*n;
return a;
}
}
int main(){
int n;
double q;
for(;;)
{
system("cls");
cout<<"请输入要求阶乘的数"<<endl;
cin>>n;
q=func(n);
cout<<n<<"的阶乘为:"<<q<<endl;
system("pause");
}
return 0;
}