C++验证是否为整数的阶乘

来源:百度知道 编辑:UC知道 时间:2024/05/16 20:24:19
以一个长整数为参数,求它是否是某个整数的阶乘,如果是则返回这个数,否则返回-1。但无论我输入什么数,输出的都是-1,哪位高手看看我的程序哪里出了问题。
#include"iostream.h"
int func(long int n)
{
long int b=0;
for(int a=1;a<=n;a++)
{
b=b*a;

if(n==b)
{
return a;
}
else
{
return -1;
}
}
}
int main()
{
long int c;

cin>>c;
cout<<func(c)<<endl;

return 0;
}

你的代码里有两个逻辑错误,
具体请看注释,都已经改好了:

#include"iostream.h"
int func(long int n)
{
long int b=1; //b需要初始化为1,否则0乘以任何数都为0
for(int a=1;a<=n;a++)
{
b=b*a;

if(n==b)
{
return a;
}
// else
// {
// return -1;
// }
}
return -1; //return -1需要在for循环执行完毕后,否则for循环中一次判断失败后,就直接进else分支返回-1了
}
int main()
{
long int c;

cin>>c;
cout<<func(c)<<endl;

return 0;
}