Начнем с того, что ваш начальный поиск (строковое слово) не работает правильно.
Ваше первое, если утверждение идеально. Это ваш базовый случай успеха.
Ваше второе утверждение if также идеально. Это ваш базовый случай неудачи.
Твой третий, где ты сойдешь с рельсов. Вы обработали все (в данном случае оба) базовые случаи, теперь все, что осталось, это рекурсивный случай. Вам не нужно ничего проверять здесь. next.find (word) вернет правильный ответ, успех или неудача.
Что касается findLast (Строковое слово), я не могу добавить много к тому, что сказал Джон Скит. О единственном совете, который я могу добавить, чтобы узел никогда не проверял своего соседа. Каждый узел должен только когда-либо проверять себя. Вы должны увидеть множество this.word.equals(word)
, но никогда next.word.equals(word)
.