Оператор возврата из цикла в метод рекурсии
public void delete(String key) {
root = delete(root, key, 0);
}
public Node delete(Node x, String key, int d) {
if(x == null)
return null;
if(d == key.length())
x.val = null;
else {
char c = key.charAt(d);
x.next[c] = delete(x.next[c], key, d + 1);
}
//----------------
if(x.val !=null )
return x;
for (char c = 0;c < R ; c++ ) {
if(x.next[c] != null)
return x;
return null;
}
}
из книги Алгоритм 4, TrieST.java
Так что же происходит? for
цикл может вернуться x
много раз; это нормально для метода возвращаемого типа? Если все в порядке, то каково окончательное возвращаемое значение?
1 ответ
Когда вызывается return, функция завершается.
Таким образом, значение, возвращаемое функцией:
- x если x.val!= ноль
- x если для первого c (т.е. c = 0), x.next[c]!=null
- иначеноль
Как сказано в комментариях, там должна быть опечатка, я думаю
return null;
должно быть после цикла. Тогда функция вернет:
- x если x.val!= ноль
- x, если существует c, для которого x.next[c]!=null
- иначеноль