Рекурсивный toString для массива объектов - PullRequest
1 голос
/ 03 марта 2020

Я должен написать рекурсивный метод toString для массива объектов. Я понимаю, как работает рекурсия. Я правильно выполнил другие рекурсивные методы в той же программе, в которой только что потерял этот метод. Выходные данные для этого метода пустые. Также есть другой нерекурсивный toString () в другом классе, который преобразует один объект House в String.

    public String toString(House[] list, int n)
{
    if (n == 0)
        return "";
    else
    {
        toString(list, n-1);
        return toString(list, n-1);
    }
}

1 Ответ

2 голосов
/ 03 марта 2020

Вам необходимо накопить каждый элемент перед переходом к следующему вызову:

public static String toString(String[] array, int n)
{
    if (n == 0) return "";
    else
    {
        return array[array.length - n] + toString(array, n-1);
    }
}
System.out.println(toString(new String[]{"abc", "def", "ghi"}, 3));

Вывод:

abcdefghi

Вот еще один фрагмент, который добавляет разделитель в между элементами:

public static String toString(String[] array, int n)
{
    if (n == 0) return "";
    else
    {
        return array[array.length - n] + (n > 1 ? ", " : "") + toString(array, n-1);
    }
}

Вывод:

abc, def, ghi
...