C ++ Рекурсия, как использовать оператор if в то время как - PullRequest
0 голосов
/ 04 июня 2018

Я делал рекурсию, чтобы найти факториал числа, когда я пишу функцию, все идет хорошо:

#include <iostream>

using namespace std;

int factorialfinder(int x){
if(x==1){
    return 1;
}else{
    return x * factorialfinder(x-1);
}
}

int main()
{
int x;
cout << "Please enter a number for the factorial finder " << endl;
cin >> x;
cout << "The factorial of " << x << " is " << factorialfinder(x) << endl << endl;
cout << "Enter another number for the factorial finder " << endl;


while(x > -1){
    cin >> x;
    cout << "The factorial of " << x << " is " << factorialfinder(x) << endl << endl;
    cout << "Enter another number for the factorial finder " << endl;
}

}

, но я хотел добавить оператор if, если x = 0 или <= -1, тогда он покажет сообщение об ошибке, но я не могу сделать это в цикле while, используя, если это вызовет ошибку, и это автоматически завершит мою программу, почему?: </p>

#include <iostream>

using namespace std;

int factorialfinder(int x){
if(x==1){
    return 1;
}else{
    return x * factorialfinder(x-1);
}
}

int main()
{
int x;
cout << "Please enter a number for the factorial finder " << endl;
cin >> x;
cout << "The factorial of " << x << " is " << factorialfinder(x) << endl << endl;
cout << "Enter another number for the factorial finder " << endl;


while(x > -1){
    cin >> x;
    if(x = 0 || x <= -1){
    cout << "Please enter a proper value to find the factorial";}
    else{
    cout << "The factorial of " << x << " is " << factorialfinder(x) << endl << endl;
    cout << "Enter another number for the factorial finder " << endl;}
}

}

1 Ответ

0 голосов
/ 04 июня 2018

Если ваше утверждение неверно, вы используете оператор присваивания = вместо сравнения ==

Вам нужно написать это:

 if(x == 0 || x <= -1)

Вы можете написать лучшекак if(x<=0) как указал Карстен Куп *

...