Присваивание внутри оператора return

Я начал изучать систему непересекающихся множеств, но на сайте e-maxx.ru представлен только код на C++, а я знаю только Питон 3 и Паскаль. Вот непонятный мною код:

http://e-maxx.ru/algo/dsu

int find_set (int v) {
    if (v == parent[v])
        return v;
    return parent[v] = find_set (parent[v]);
}

Интересует строчка return parent[v] = find_set (parent[v]); Почему при возвращении присваивается значение переменной? Если возможно, прошу подсказать, как это можно написать на питоне или паскале


Ответы (1 шт):

Автор решения: Qwertiy
  1. Потому что в Си(++) можно использовать присваивания в любых выражениях.
  2. Потому что это удобно, когда изменение и дальнейшие действия в одном месте.
  3. Переменная parent глобальная, так что присваивание имеет смысл.
  4. Начиная с Питона 3.8 так тоже можно будет делать с помощью оператора :=.
→ Ссылка