如果else语句无限循环

时间:2018-10-24 17:14:57

标签: c++

#include <iostream>
using namespace std;

int factorial(int n){ //Aprēķina skaitļa faktoriali izsaucot pati sevi
    if(n > 1)
        return n*factorial(n - 1);
    else
        return 1;

}
int main(){
int ok;
do{


  int n;
    cout << "Enter a integer: ";
    cin >> n;
    int x=factorial(n);
    cout << "Factorial=" << x << endl;
    for(int a=1;(a+2)<(x/2+1);a++){ 

       if(a*(a+1)*(a+2)==x)
            cout << "Equals " << a << "*" << a+1 << "*" << a+2 << endl;
        else 
            cout<<"Cant be a multiplication of 3 numbers"<<endl;
    }

    cout << " Do you want to continue (1) or end (0)?" << endl;
    cin >> ok;
}
while (ok==1);
}

所以我在这段代码中有一个阶乘函数,它检查阶乘是否可以是3个连续数字的乘积

for(int a=1;(a+2)<(x/2+1);a++){ 

           if(a*(a+1)*(a+2)==x)
                cout << "Equals " << a << "*" << a+1 << "*" << a+2 << endl;
            else 
                cout<<"Cant be a multiplication of 3 numbers"<<endl;
        }

我现在在这部分遇到问题,例如,如果我输入8,它会给出阶乘40320和无限垃圾邮件,“不能是3个数字的乘积”,当我输入1或2时,它也不会垃圾邮件“不能是3个数字的乘积”它只给出阶乘1或2 预先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您需要在之后添加break;语句

cout<<"Cant be a multiplication of 3 numbers"<<endl; 

我认为输入1或2的问题在于数学计算:

int a=1;(a+2)<(x/2+1);a++;