我正在用C++编写一个阶乘函数。我有功能正常工作。然而,要求的是,如果 参数是肯定的,则函数必须计算并返回提供给它的数字的阶乘(其参数)。如果它接收到一个负数或零的参数,该函数必须返回-1。 我似乎无法让它返回-1为零或负数,没有它也返回负数的正常因子计算。这是我的代码到目前为止。如果输入零或1作为参数,则C++析因函数必须返回-1
#include <iostream>
using namespace std;
long factorial(int x)
{
if(x>1)
return (x*factorial(x-1));
else
return -1;
}
int main()
{
int number;
cout << "Enter a number: " << endl;
cin >> number;
cout << factorial(number);
cout << endl;
return 0;
}
切换if/else语句的顺序。首先检查0/1并返回-1,否则计算阶乘 – dchhetri 2014-10-05 19:21:27
12!是适合32位整数的最大因子。任何更大的将会溢出并可能会给你一个负面的结果。 – jrok 2014-10-05 19:22:40
@jrok是不是从'34!'开始的'0'? (否则,我认为_half_结果是否定的。) – AlexD 2014-10-05 19:35:10