我想寫一個代碼來獲得從(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