这是一个简单的因子计算器。我用函数factorial
调用了三个不同的参数来测试它。由于某种原因,该函数未返回预期值:
#include <iostream>
using namespace std;
int factorial(int a) {
int result = 1;
for (int i = 0; i < a; i++) {
result *= result + 1;
}
return result;
}
int main() {
cout << factorial(4) << endl; // returns 1806, expected 24
cout << factorial(5) << endl; // returns 3263442, expected 120
cout << factorial(6) << endl; // returns -1461943274, expected 720
return 0;
}
答案 0 :(得分:1)
我会在你的函数中使用while循环而不是for循环:
int factorial(int a)
{
int result = 1;
while (a > 0)
{
result *= a;
a--;
}
return result;
}
编辑: 你的代码的一个问题是你没有在你的for循环中减少我:它应该是这样的:
int factorial(int a) {
int result = 1;
for (int i = a; i > 0; i--)
}
result *= i;
return result;
}
答案 1 :(得分:1)
问题出在你的阶乘函数中,你加1为什么?您应该从i=1
到i<=a
开始循环并乘以i
而不是+1
,
按数学定义Factorial of n = n*(n-1)*(n-2)...3.2.1
您可以像这样修改代码
int factorial(int a) {
int result = 1;
for (int i = 1; i <=a; i++) {
result = result * i;
}
return result;
}
或者你可以使用递归函数
int factorial(int a) {
if (a == 1)
return 1;
else
return a * factorial(a - 1);
}