2017-02-22 233 views
0

由于某些原因,我的else if声明无效。当我使用输入“20”运行代码时,当我的else if语句应该为此更正时,我会得到阶乘为“20”的表达式。为什么我的“else if”声明不起作用?

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

我不明白你在问什么?其他如果达到20,应该返回“错误”。 –

回答

2

你不回你的其他人,如果,导致从您的阶乘函数未定义的回报: What if I don't put a return value to a function whose prototype returns a 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; 
} 
+1

嘿,我知道我已经很长时间了,但我只是想感谢你的回复。我很感激。 – bsmith144