Я создаю фабрику, которая производит комнаты, и ей передают int шагов и стартовую комнату, и она должна сделать шаг, построить комнату, а затем назвать себя с одним меньшим шагом и новой комнатой, какСтартовая комната.Проблема в том, что это никогда не заканчивается.В отладчике я вижу, что он вызывает сам себя, что создает в памяти еще один вызов метода, который на самом деле имеет на один шаг меньше, но затем строка выполнения переходит к началу вызова метода current !поэтому он никогда не завершает новый вызов.Как будто он помещал новый вызов в кучу, а не в стек, а затем никогда не получал его.
Код:
@Override
public Room place(Level level, int cycles, Room start_room,
Direction direction, int shop, int exit, LevelFactoryReport report) throws Exception
{
Room room = null;
if(cycles < 1)
{
return start_room;
}
else
{
report.addEvent("--Placer step--");
report.addEvent("Steps remaining: "+cycles);
room = this.Step(level, start_room, direction, shop, exit, report);
if(room == null)
{
cycles = 0;
report.addEvent("Step returned a null room (probably because it ran into an existing room). Ending cycle.");
}
}
return place(level, (cycles--), room, direction, (shop--), (exit--), report);
}
В приведенном выше коде он проходит через различные реализации, затем переходит к новому вызову place (), а затем просто создает новый экземпляр place (), но не не входит в него, а вместо этого строка выполнения возвращается к «Комната комнаты».= start_room "исходного вызова.Он делает это бесконечно, причем циклы всегда имеют начальное значение 4, и все больше и больше экземпляров place () заполняют стек.Я посмотрел на новые экземпляры, и все они на самом деле имеют значение «циклов» 3.
Странно то, что каждая итерация, которая на самом деле выполняется, запускается в следующей комнате, поэтому, когда она идетобратно наверх, он возвращается наверх, минуя следующую комнату.Но почему он создает новый экземпляр place () (с новой комнатой AND и новым значением циклов 3), а затем повторно запускает старый place (), используя новую комнату, НО НЕ новое значение циклов 3?