[PATCH] Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time

Wald Commits scm-commit at wald.intevation.org
Tue Aug 26 11:28:59 CEST 2014


# HG changeset patch
# User Sascha L. Teichmann <teichmann at intevation.de>
# Date 1409045283 -7200
# Node ID 1e8812b996bca02c7cf29feea18397f4e9f99471
# Parent  8eb25cbfe2427d6792257919d08e36e5567a1d22
Sediment load: Remove simple tail recursive calls from SedimentLoadData.recursiveFindStations(). More carefully this time.

diff -r 8eb25cbfe242 -r 1e8812b996bc artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java	Tue Aug 26 11:18:03 2014 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java	Tue Aug 26 11:28:03 2014 +0200
@@ -393,20 +393,19 @@
         int lo, int hi,
         Visitor visitor
     ) {
-        if (lo > hi) {
-            return;
-        }
-        int mid = (lo+hi)/2;
-        Station st = stations[mid];
-        double station = st.getStation();
-        if (station < a) {
-            recursiveFindStations(a, b, mid+1, hi, visitor);
-        } else if (station > b) {
-            recursiveFindStations(a, b, lo, mid-1, visitor);
-        } else {
-            recursiveFindStations(a, b, lo, mid-1, visitor);
-            visitor.visit(st);
-            recursiveFindStations(a, b, mid+1, hi, visitor);
+        while (lo <= hi) {
+            int mid = (lo+hi)/2;
+            Station st = stations[mid];
+            double station = st.getStation();
+            if (station < a) {
+                lo = mid+1;
+            } else if (station > b) {
+                hi = mid-1;
+            } else {
+                recursiveFindStations(a, b, lo, mid-1, visitor);
+                visitor.visit(st);
+                lo = mid+1;
+            }
         }
     }
 


More information about the Dive4Elements-commits mailing list