From e7c3de84deeef1ead3a9345e44512dc2858b703f Mon Sep 17 00:00:00 2001 From: Maxet1000 Date: Sun, 14 Jul 2024 15:11:41 +0200 Subject: [PATCH] made tailrec --- .../java/org/isoron/uhabits/core/models/ScoreList.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt index 65b85ea6b..c2e1e9d11 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/ScoreList.kt @@ -69,12 +69,13 @@ class ScoreList { * and repeats this process for the expanded part until no skips are found in an expanded part. */ @Synchronized - fun getNumberOfSkipsByInterval( + tailrec fun getNumberOfSkipsByInterval( values: IntArray, firstIndexCurrentInterval: Int, - lastIndexCurrentInterval: Int + lastIndexCurrentInterval: Int, + numberOfSkipsIntermediate: Int = 0 ): Int { - if (lastIndexCurrentInterval < firstIndexCurrentInterval) return 0 + if (lastIndexCurrentInterval < firstIndexCurrentInterval) return numberOfSkipsIntermediate var nbOfSkips = 0 var nextLastIndex = lastIndexCurrentInterval for (i in firstIndexCurrentInterval..lastIndexCurrentInterval) { @@ -83,7 +84,7 @@ class ScoreList { if (lastIndexCurrentInterval + nbOfSkips < values.size) nextLastIndex++ } } - return nbOfSkips + getNumberOfSkipsByInterval(values, lastIndexCurrentInterval + 1, nextLastIndex) + return getNumberOfSkipsByInterval(values, lastIndexCurrentInterval + 1, nextLastIndex, nbOfSkips) } /**