Мне было интересно, есть ли способ проверить, находится ли вы на первом рекурсивном вызове серии из множества рекурсивных вызовов.
Я работаю над функцией, которая проверяет,вход палиндром.После завершения последнего рекурсивного вызова входная строка изменяется на обратную по сравнению с исходной.Теперь все, что я хочу сделать, это сравнить результат с оригиналом.Но когда базовый случай достигнут, у меня больше нет доступа к копии исходной строки, которую я сделал в операторе else.
Тогда я думаю сравнить palCopy
с palCheck
в операторе else, но проблема в том, что программа проверяет это во время КАЖДОГО рекурсивного вызова, когда я хочу проверять его только при возврате элемента управленияна оригинальный рекурсивный вызов.Есть ли способ условно сравнивать palCopy
и palCheck
только тогда, когда элемент управления возвращается к исходному рекурсивному вызову?
void isAPalindrome(MyString palCheck, int bound1, int bound2)
{
if (bound1 >= bound2)
{
cout << palCheck;
}
else
{
MyString palCopy = palCheck; // make a copy of the original argument so as not to alter it
char temp = palCopy[bound1];
palCopy[bound1] = palCopy[bound2];
palCopy[bound2] = temp;
isAPalindrome(palCopy, bound1 + 1, bound2 - 1);
}