Может ли кто-нибудь объяснить мне, что происходит в этом случае? Из небольшого знания, которое у меня есть (и, очевидно, я ошибаюсь в своих мыслях), мне следует продолжать уменьшать x на 1 до тех пор, пока x равно 3. Затем он должен перейти к «return true, part и как функция возвращает true» возвращается во второй оператор if, возвращает false, а затем выходит из функции, так как нечего делать, если функция возвращает false. Но это продолжает возвращаться ко второму оператору if, добавляя 1 к x, пока не снова 9, а затем выйдет. Заранее спасибо.bool возвращающая рекурсивная функция неожиданно изменяет переменную
bool Rec(int x)
{
if(x > 3)
{
if(Rec(x - 1) == true)
{
return false;
}
else
{
return false;
}
}
else
{
return true;
}
}
void main()
{
Rec(9);
}
Ваше первое предложение может быть заменено на 'return false;' ?? –
@ πάνταῥεῖ: или все тело функции с возвратом x <= 3; ' – Olaf
Что вы хотите достичь? Что значит «изменяет переменную ...»? Рекурсия здесь бесполезна. – Olaf