Рекурсия в Java. После и перед каждой гласной вставить "*" по условию ниже

Прошу помощи, как коректно написать рекурсию? В интернете уже лазила, но ничего толкового не нашла. Вот условие:

> Дано - строка. Напишите рекурсивный метод, возвращающий новую строку,
> где все гласные отделены от примыкающих букв символом ("*").
> Предполагается, что все слова состоят из букв латинского алфавита.
> String interviewRecursionTest(String line);
> interviewRecursionTest("hello") -> "h*e*ll*o"
> interviewRecursionTest("healo") -> "h*e*a*l*o"
> interviewRecursionTest("abc") -> "a*bc" interviewRecursionTest("oab")
> -> "o*a*b"

Вот мой код, который работает не так как надо:

public class Words {
    private String result = "";
    private String engAlp = "aeiouyAEIOUY";
    private final int[] ENG_ASCII;

    public Words() {
        this.ENG_ASCII = put(engAlp);
    }

    public String interviewRecursionTest(String line) {
        String operation = line;
        String temp = "";

        if (operation.equals("")) {
            return temp;
        }

        for (int i = 0; i < operation.length(); i++) {
            for (int j = 0; j < ENG_ASCII.length; j++) {
                if (operation.charAt(i) == ENG_ASCII[j]) {
                    temp += "*" + operation.charAt(i);
                    operation = operation.substring(i+1);
                    if (i + 1 >= operation.length()) {
                        return temp;
                    }
                    interviewRecursionTest(operation);
                }
            }
            temp += operation.charAt(i);
        }

        return temp;
    }

    public int[] put (String str) {
        int[] engASCII = new int[12];

        for (int i = 0; i < str.length(); i++) {
            engASCII[i] = (int) str.charAt(i);
        }

        return engASCII;
    }
}

public class Test {
    public static void main(String[] args) {
        Words words = new Words();
        System.out.println(words.interviewRecursionTest("hello"));
    }
}

Ответы (1 шт):

Автор решения: vp_arth

Необходимость рекурсии тут довольно синтетическая, но задание есть задание.

Можно разбивать строку пополам, склеивая подзадачи через звёздочку, если нужно:

 private final static String engAlp = "aeiouyAEIOUY";
 public static String interviewRecursionTest(String line) {
     if (line.length() == 1) {
         return "" + line.charAt(0);
     }

     int pivot = line.length() / 2;
     String left = line.substring(0, pivot);
     String right = line.substring(pivot);
     boolean needSep = engAlp.indexOf(left.charAt(pivot-1)) != -1 
                    || engAlp.indexOf(right.charAt(0)) != -1;

     return interviewRecursionTest(left) 
          + (needSep ? "*" : "") 
          + interviewRecursionTest(right);
 }
 public static void main(String []args){
    System.out.println(interviewRecursionTest("oab, friend"));
 }
o*a*b, fr*i*e*nd
→ Ссылка