getFCostLimit() public method

public getFCostLimit ( ) : Double
return Double
        //
        // PRIVATE METHODS
        //
        // function RBFS(problem, node, f_limit) returns a solution, or failure and
        // a new f-cost limit
        private SearchResult rbfs(Problem p, Node n, double node_f, double fLimit,
                                  int recursiveDepth)
        {
            setMaxRecursiveDepth(recursiveDepth);

            // if problem.GOAL-TEST(node.STATE) then return SOLUTION(node)
            if (SearchUtils.isGoalState(p, n))
            {
                return(new SearchResult(n, fLimit));
            }

            // successors <- []
            // for each action in problem.ACTION(node.STATE) do
            // add CHILD-NODE(problem, node, action) into successors
            List <Node> successors = expandNode(n, p);

            // if successors is empty then return failure, infinity
            if (0 == successors.Count)
            {
                return(new SearchResult(null, INFINITY));
            }
            double[] f = new double[successors.Count];
            // for each s in successors do
            // update f with value from previous search, if any
            int size = successors.Count;

            for (int s = 0; s < size; s++)
            {
                // s.f <- max(s.g + s.h, node.f)
                f[s] = Math.max(evaluationFunction.f(successors.get(s)), node_f);
            }

            // repeat
            while (true)
            {
                // best <- the lowest f-value node in successors
                int bestIndex = getBestFValueIndex(f);
                // if best.f > f_limit then return failure, best.f
                if (f[bestIndex] > fLimit)
                {
                    return(new SearchResult(null, f[bestIndex]));
                }
                // if best.f > f_limit then return failure, best.f
                int altIndex = getNextBestFValueIndex(f, bestIndex);
                // result, best.f <- RBFS(problem, best, min(f_limit, alternative))
                SearchResult sr = rbfs(p, successors.get(bestIndex), f[bestIndex],
                                       Math.min(fLimit, f[altIndex]), recursiveDepth + 1);
                f[bestIndex] = sr.getFCostLimit();
                // if result != failure then return result
                if (sr.getOutcome() == SearchResult.SearchOutcome.SOLUTION_FOUND)
                {
                    return(sr);
                }
            }
        }