bubble: die laufzeit einer rekrusiven methode fixen

Beitrag lesen

private static HashMap<Integer,Double[]> p(HashMap<Integer,Double[]> map, Integer stationID, int t, int T) {  
	if(T == t+1) {  
		return map;  
	}  
	  
	NodeDataIterator graph = new NodeDataIterator();  
	graph.selectStation(stationID);  
	ArrayList<NodeData> nachfolger = graph.getNexts();  
	  
	for(NodeData node: nachfolger.toArray(new NodeData[nachfolger.size()]) {  
		Double[] d = map.get(node.id);  
		if(d == null) {  
			d = new Double[T];  
			for(int i=0; i<T; i++) {  
				d[i] = 0.0;  
			}  
			map.put(node.id, d); //[1]  
		}  
		  
		WasAuchImmer edgeWK0 = Controller.edgesWK.get(String.valueOf(StochastischeMatrix.kombi(stationID,node.id)));  
		WasAuchImmer edgeWK1 = edgeWK0 == null ? null : Controller.edgesWK.get(String.valueOf(StochastischeMatrix.kombi(stationID,stationID)));  
		if(edgeWK1 != null && edgeWK1.zahl[0] != 0) {  
			d[t] = edgeWK0.zahl[0]/edgeWK1.zahl[1];  
		}  
		else {  
			d[t] = 0.0;  
		}  
		//map.put(node.id, d);[1]  
		if(d[t] != 0) {  
			return p(map, node.id, t+1, T);  
		}  
	}  
	return map;  
}

[1] Da Arrays Call-by-reference sind, muss map.put(node.id, d); auch nur aufgerufen werden, wenn der Eintrag noch nicht existiert.

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye