简体   繁体   中英

Why isn't my “else if” statement working?

For some reason my else if statement is not working. 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.

#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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM