Я пытаюсь написать код, чтобы получить набор точек (x, y), доступных для обезьяны, начиная с (0,0), так что каждая точка удовлетворяет | x | + | y | < _limitSum. Я написал приведенный ниже код и использовал статический HashSet членов типа Coordinate (не показано здесь) и написал рекурсивный метод AccessPositiveQuadrantCoordinates. Но проблема состоит в том, что члены HashSet, переданные через рекурсивные вызовы, не отражают членов Координатора, добавленных в предыдущие вызовы. Может ли кто-нибудь помочь мне в том, как передать ссылки на объекты, чтобы сделать это возможным? Есть ли другой способ решения этой проблемы?Как написать рекурсивную функцию с использованием статических переменных
public class MonkeyCoordinates {
public static HashSet<Coordinate> _accessibleCoordinates = null;
private int _limitSum;
public MonkeyCoordinates(int limitSum) {
_limitSum = limitSum;
if (_accessibleCoordinates == null)
_accessibleCoordinates = new HashSet<Coordinate>();
}
public int GetAccessibleCoordinateCount() {
_accessibleCoordinates.clear();
Coordinate start = new Coordinate(0,0);
AccessPositiveQuadrantCoordinates(start);
return (_accessibleCoordinates.size() * 4);
}
private void AccessPositiveQuadrantCoordinates(Coordinate current) {
if (current.getCoordinateSum() > _limitSum) { return; }
System.out.println("debug: The set _accessibleCoordinates is ");
for (Coordinate c : _accessibleCoordinates) {
System.out.println("debug:" + c.getXValue() + " " + c.getYValue());
}
if (!_accessibleCoordinates.contains(current)) { _accessibleCoordinates.add(current); }
AccessPositiveQuadrantCoordinates(current.Move(Coordinate.Direction.East));
AccessPositiveQuadrantCoordinates(current.Move(Coordinate.Direction.North));
}
Я дам указания всем приемлемым ответам.
Благодаря вперед, Сомнатх
«Использование статических переменных» не имеет ничего общего с вашей проблемой. – EJP
@EJP: Хорошо. Но если нам нужен набор точек вместо Count, то как нестатическая переменная может служить цели? Можете ли вы рассказать? – somnathchakrabarti
Используйте переменную экземпляра. Вам нужны только статические переменные, если ваши методы статичны. Это не так. – EJP