我想写一个代码来获得从(0,0)开始的猴子可访问的点集(x,y),使得每个点满足| x | + | y | < _limitSum。我写了下面的代码,并使用了坐标类型(此处未显示)的成员的静态HashSet,并编写了递归方法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 2012-03-19 09:09:13
@EJP:好的。但是如果我们需要一组点来代替Count,那么非静态变量如何能够达到目的呢?你能简要介绍一下吗? – somnathchakrabarti 2012-03-19 09:29:21
使用实例变量。如果你的方法是静态的,你只需要静态变量。他们不是。 – EJP 2012-03-19 09:30:48