Я пытаюсь вернуть глубину строки в дерево radix после нахождения строки в дереве radix, но я всегда получаю значение 2
.Возвращаем добавочное значение после рекурсивного вызова метода
Как сохранить значение счетчика после его увеличения и получить метод recursiv depth(nextNodeEdge, restString)
, вызываемый несколько раз?
Код:
private int depth(TrieNode node, String s) {
int count = 1;
String communsubString = checkEdgeString(node.getNext(), s);
String restString = s.substring(communsubString.length());
if (node.getNext() != null && !node.getNext().isEmpty()) {
for (TrieNode nextNodeEdge : node.getNext()) {
if (nextNodeEdge.getEdge().equals(communsubString)) {
count++;
if (!restString.isEmpty()) {
count = depth(nextNodeEdge, restString);
} else {
System.out.println("Found");
}
}
}
}
return count;
}
Что вы хотите сделать с возвращенным значением 'глубины (nextNodeEdge, restString)'? Добавьте его к 'count'? – Tom
'count' никогда не принимает значение, отличное от' 1' или '2'. Если вы хотите измерить глубину узла во время рекурсивного вызова, вам необходимо передать * текущую глубину * в качестве параметра или увеличить возвращаемое значение глубины. В настоящее время 'depth()' не знает глубины узла, с которым он вызван, поэтому он также не может его вернуть. – dhke
Вы пытались сменить 'count = depth (...)' на 'count + = depth (...)'? – OldCurmudgeon