Я искал высоко и низко и, похоже, не нашел много материала, связанного со сложностями времени выполнения, рекурсией и java.Сложности во время выполнения для рекурсивных алгоритмов
В настоящее время я изучаю сложности во время выполнения и нотацию Big-O в классе «Алгоритмы», и у меня возникают проблемы с анализом рекурсивных алгоритмов.
private String toStringRec(DNode d)
{
if (d == trailer)
return "";
else
return d.getElement() + toStringRec(d.getNext());
}
Это рекурсивный метод, который будет просто перебирать список с двойной связью и распечатывать элементы.
Единственное, что я могу придумать, это то, что он имеет сложность O (n) во время выполнения, поскольку количество вызовов рекурсивных методов будет зависеть от количества узлов в DList, но я до сих пор не знаю, t чувствовать себя комфортно с этим ответом.
Я не уверен, должен ли я составлять учет d
и d.getNext()
.
Или я просто полностью отключен от дорожки, и сложность времени выполнения постоянна, так как все его выполнение извлекает элементы из DNodes
в DList
?
См. Http://stackoverflow.com/questions/1126388/slow-string-concatenation-over-large-input – dyoo