自定义阶乘函数未按预期工作
Custom factorial function not working as expected
这是一个简单的阶乘计算器。我用三个不同的参数调用了函数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;
}
问题出在您的阶乘函数中,您正在添加 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);
}
我会在你的函数中使用一个 while 循环而不是 for 循环:
int factorial(int a)
{
int result = 1;
while (a > 0)
{
result *= a;
a--;
}
return result;
}
编辑:你的代码的一个问题是你没有在你的 for 循环中减少 i:它应该是这样的:
int factorial(int a) {
int result = 1;
for (int i = a; i > 0; i--)
}
result *= i;
return result;
}
相关文章:
- 在 C++ 中的数组上使用阶乘函数
- 阶乘问题在 c++ 中给出错误的输出
- 大数的阶乘给出错误的输出
- 什么模板用法在阶乘中更好
- 为什么我在C++阶乘函数中出现编译错误?
- 计算阶乘的 C++17 倍表达式中的错误
- 为什么 Lisp 中 1000 阶乘的计算如此之快(并显示正确的结果)?
- 在C++中执行 N 阶乘编译时间的 3 种不同/相同方法
- 平方模型为零,阶乘模型问题
- 阶乘元规划
- 阶乘-c++ 我想以不同的方式打印
- 阶乘函数只返回C++中输入的答案
- 阶乘使用循环递增给出垃圾值
- 大 n 表示阶乘
- 为什么我不能在非常量表达式上使用此模板阶乘函数?
- 计算最大数字的阶乘
- 这个阶乘程序内部发生了什么?
- 返回阶乘C++的递归函数
- C++ 中是否有任何内置阶乘函数?
- 自定义阶乘函数未按预期工作