C++ C++;阶乘函数不起作用
有人能帮我理解为什么这个代码不能正常工作吗?我知道离这里很近,我想我只是忽略了一些东西。感谢您的帮助。以下是我到目前为止的情况:C++ C++;阶乘函数不起作用,c++,factorial,C++,Factorial,有人能帮我理解为什么这个代码不能正常工作吗?我知道离这里很近,我想我只是忽略了一些东西。感谢您的帮助。以下是我到目前为止的情况: #include <iostream> #define TEST_ARRAY_SIZE 4 long int factorial(int num); long int factorial(int num){ for(unsigned int i = 1; i <= num; i++) {
#include <iostream>
#define TEST_ARRAY_SIZE 4
long int factorial(int num);
long int factorial(int num){
for(unsigned int i = 1; i <= num; i++) {
num *= i;
}
return num;
}
int main() {
int test[TEST_ARRAY_SIZE] = {1, 2, 5, 7};
for (unsigned int i = 0; i < TEST_ARRAY_SIZE; i++) {
std::cout << "Factorial of " << test[i] << " is " << factorial(test[i]) << std::endl;
}
return 0;
}
#包括
#定义测试数组大小4
长整数阶乘(int-num);
长整数阶乘(整数){
对于(unsigned int i=1;i您应该将return num;
移到循环之外。现在,控件总是在第一个数字相乘后返回
--正确的代码--
长整数阶乘(int num){
长整数res=1;
对于(unsigned int i=1;i这只是问题的一部分;在这种情况下,适当的缩进会使错误在瞬间显现出来
除此之外,为什么要在循环中使用num?应该保持原样,并声明一个新变量来复合并返回结果
long int factorial(unsigned int num) {
int x = 1;
for(unsigned int i = 1; i <= num; i++) {
x *= i;
}
return x;
}
long整数阶乘(unsigned int num){
int x=1;
对于(unsigned int i=1;i阶乘函数体不正确。您可以使用递归方法计算特定数字的阶乘。您版本的更正程序如下:
#include <iostream>
#define TEST_ARRAY_SIZE 4
long int factorial(int num);
int main() {
int test[TEST_ARRAY_SIZE] = {1, 2, 5, 7};
for (unsigned int i = 0; i < TEST_ARRAY_SIZE; i++) {
std::cout << "Factorial of " << test[i] << " is " << factorial(test[i]) << std::endl;
}
return 0;
}
long int factorial(int num){
if (num == 1)
return num;
else
return num * factorial(num-1);
}
#包括
#定义测试数组大小4
长整数阶乘(int-num);
int main(){
int test[test_ARRAY_SIZE]={1,2,5,7};
for(无符号整数i=0;i std::您是否可以尝试将返回
移动到循环外部。修复缩进将有助于使其更加明显。但这也会使循环无限大,因为您正在修改用作循环终止的变量。我这样做了,但它仍然没有输出正确的答案。
#include <iostream>
#define TEST_ARRAY_SIZE 4
long int factorial(int num);
int main() {
int test[TEST_ARRAY_SIZE] = {1, 2, 5, 7};
for (unsigned int i = 0; i < TEST_ARRAY_SIZE; i++) {
std::cout << "Factorial of " << test[i] << " is " << factorial(test[i]) << std::endl;
}
return 0;
}
long int factorial(int num){
if (num == 1)
return num;
else
return num * factorial(num-1);
}