У меня есть назначение, где я рекурсивно модифицирую матрицу пользовательского типа. Перед рекурсией я пытаюсь сделать копию матрицы («глубокую» копию со всеми атрибутами/переменными настраиваемого типа). Однако при возврате рекурсии исходная матрица была изменена так, как если бы она была рекурсивно передана (а не копия)Java - Recursion - Матричная модификация
В приведенном ниже коде «g» изменяется после вызова «a» с помощью g2:
функциональностьКопии:
method a(Square[][]) {
...
g2 = new Square[g.length][];
for(int d = 0; d < g.length; d++) {
g2[d] = Arrays.copyOf(g[d], g[d].length);
}
a(g2);
//Here, g has been modified and not the original set of values
}
Спасибо за ответ. С конструктором копирования будет ли какой-либо из вышеперечисленного кода работать или есть необходимость сделать что-то особенное? Итак, могу ли я сделать следующее и иметь исходные значения для «g», доступные после рекурсии ?: g2 = new Square [g.length] []; для (int d = 0; d