Вообще говоря, рекурсия - хорошая идея, но не очень хорошая для реализации, обычно она может быть достигнута итеративно и занимает гораздо больше времени и памяти, чем итеративный способ. Поэтому я покажу вам, как реализовать ваш алгоритм итеративно.
Псевдокод:
1. Call nextGeneration
2. loop 1 to NumberofGenerations
2.1. init future
2.2. put next generation in future
2.3. print future
2.4. copy future to grid
Поскольку ваш код создает следующее поколение независимо от того, что в будущем массиве, он будет работать.
У вас уже есть шаги 1, 2.1, 2.2, 2.3
, все, что вам нужно сделать, это удалить рекурсивный вызов, добавить al oop (этап 2.
) и скопировать будущее в сетку (этап 2.4
).
Скопировать код :
for (int i=0; i < grid.length; i++)
for (int j=0; j < grid[i].length; j++)
grid[i][j] = future[i][j];