Короткий ответ - да ... с рекурсией, обычно на пути вниз по дереву, вы обрабатываете бит на каждом уровне, в данном случае это пустой или текущий символ. Поэтому оператор return должен вызывать себя рекурсивно, а затем в нижней части дерева нужный ответ восстанавливается путем сложения разделов на каждом уровне.
public static String deathToX(String str){
if (!str.isEmpty()){
return (str.substring(0, 1).equals("x") ? "" : str.substring(0, 1)) + deathToX(str.substring(1));
}else{
return "";
}
}
public static void main(String[] args){
System.out.println("Return: " + deathToX("xnoxmore"));
}
В приведенном выше примере я использовал сокращение if format, чтобы поместить все это в одну строку, но вы можете расширить его. Вы должны увидеть, что рекурсивная функция рекурсивно используется в операторе return, и я поместил специальный случай для последнего уровня. Если вам нужно разделить это и поместить эти уровни, ответьте в локальной переменной, например. Тогда вы должны использовать tmp:
return tmp + deathToX(str.substring(1));
Помните, что рекурсия означает, что текущее выполнение приостанавливается только до тех пор, пока не завершатся нижние, поэтому вы можете с радостью хранить информацию для восстановления на пути к резервному копированию. Надеюсь, это поможет:)