[英]Why isn't my “else if” statement working?
For some reason my else if
statement is not working. 由于某种原因,我的
else if
语句不起作用。 When I run the code with the input "20", I get the expression for the factorial back then for "20", when my else if
statement should correct for this. 当我用输入“ 20”运行代码时,我的
else if
语句应该对此进行校正时,我得到了阶乘的表达式然后是“ 20”。
#include <iostream>
unsigned int factorial(unsigned int number);
int main()
{
unsigned int number;
std::cout << "Please enter a positive interger. ";
std::cin >> number;
std::cout << "facorial of " << number << " = " << factorial(number);
return 0;
}
unsigned int factorial(unsigned int number)
{
if (number > 1 && number < 20) {
return number * factorial(number - 1);
}
else if (number >= 20) {
std::cout << "error" << std::endl;
}
else
return 1;
}
You don't return out of your else if, resulting in an undefined return from your factorial function: What if I don't put a return value to a function whose prototype returns a value 如果您没有从其他项目中返回,那么会导致阶乘函数产生未定义的返回: 如果我不将返回值放入其原型返回值的函数中,该怎么办
The number you're getting is not the result of the function, but instead is an undefined value. 您得到的数字不是函数的结果,而是一个未定义的值。
#include <iostream>
unsigned int factorial(unsigned int number);
int main()
{
unsigned int number;
std::cout<< "Please enter a positive interger. ";
std::cin >> number;
std::cout << "facorial of " << number << " = " << factorial(number);
return 0;
}
unsigned int factorial(unsigned int number)
{
if (number > 1 && number < 20){
return number * factorial(number - 1);
}
else if (number >= 20){
std::cout << "error" << std::endl;
return 0;
}
else
return 1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.