Этот рекурсивный метод находит палиндром строки на основе значения n. Где n - это количество символов, которые сравниваются в каждый момент времени. Если n равно 2, то «abab» является палиндромом из-за ab и ab.
public static boolean nDrome(String s, int n)
{
if(s.isEmpty())
return true;
else if( s.length() == 3 )
return true;
else
{
if(s.substring(0,n).equals( s.substring(s.length()-n) ) )
return nDrome( s.substring(n, s.length()-n), n);
else
return false;
}
}
Проблема заключается в моем втором операторе if. Например, рассмотрим:
nDrome("abcdefgcdab", 2);
Это палиндром, потому что AB, CD, EFG, CD, AB
Обратите внимание, что средний член не считается,так что в этом случае код работает, потому что в if есть жестко закодированное значение 3. Теперь, если бы я изменил значение n, он больше не работал бы должным образом. Как я могу определить значение второго оператора if?