Вектор in discuse
Я правильно понимаю, что любой рекурсивный алгоритм неявно использует стек, который, в свою очередь, всего лишь модная версия Vec? То есть когда кто-то изящно решает задачу на списках с помощью рекурсии, то он просто показывает как с помощью синтакстического сахара языка переложить список в вектор?
no subject
Ну почему, есть же хвостовая рекурсия, там стек не нужен.
no subject
Спасибо!
UPD: нагуглил. Вроде стэк всё равно нужен? Просто можно сэкономить один frame?
no subject
no subject
То есть у нас, при хорошем раскладе, будет задействован всего один stack frame на всю цепочку рекурсивных вызовов, так?
no subject
Задание на дом - взять классическое двоичное дерево* и модифицировать его так, чтобы рекурсивный обход можно было выполнить в одном стек фрейме.
* Узел дерева
struct Tree
{ int payload; Tree* left; Tree* right;}
no subject
Стек не нужен. Вместо call - фактически goto. Как цикл.
no subject
no subject
доступа по индексу в стеке (высокоуровневого языка) нету например
> как с помощью синтакстического сахара языка переложить список в вектор
я писал на бейсике поиск пути в графе, естественно без функций-параметров и даже gosub
с сахаром код намного понятней
разумеется любой рекурсивный алгоритм можно перевести на явный стек с goto, которые возможно моделировать структурным кодом со switch
чаще всего будет лапша