Может быть, я просто запутался ни в чем, но здесь идет речь:
Во многих случаях у нас есть рекурсивный алгоритм, в котором значения, которые нам нужны, изменяются при переходе от одной рекурсии к другой.
Примеры могут быть min
max
maxNoOfNodes
и т. Д.
В C ++ можно передавать различные параметры в качестве ссылок, и все работает нормально.
В Java это не может работать, поскольку все копируется по значению, и поэтому необходимо создать дополнительный класс для аргумента в качестве держателя, чтобы изменить его внутри функции.
Так что в C ++:
int findLargestSeq(Tree *p, int &min, int &max,Tree *& seqTree)
не может быть "переведен", как в Java, но должен выглядеть так:
int findLargestSeq(Tree p, Params p)
, где Params
будет инкапсулировать min
max
и т. Д. Будет обновлено.
Мне было интересно, это единственный путь?
Есть ли более "чистый" подход или стандартный шаблон в Java для такого рода алгоритмов?
Я думаю, что, возможно, тот факт, что мы модифицируем аргументы, которые передаются как ссылки в C ++, является привычкой, оставшейся от программирования на C, тогда как в Java, которая является чисто ОО, я также застрял, думая об этомпроцедурным образом и не вижу, что я должен как-то решать подобные проблемы по-другому.
Любой ввод приветствуется