Введение

Серия ссылок, где последний объект ссылается на первый.

Циклическая ссылка (или цикл ссылок) — это серия ссылок, где последний объект ссылается на первый, образуя замкнутый цикл.

Простой пример

Новичок спрашивает у местного жителя, где находится городская библиотека. "Прямо напротив почтового отделения", - отвечает местный житель. Новичок кивает и спрашивает: "А где почтовое отделение?" "Да это просто", - отвечает местный житель. "Оно сразу за библиотекой!"

На языке

Круговая ссылка не следует путать с логической ошибкой круговой аргументации. Хотя круговая ссылка часто бывает бесполезна и не предоставляет никакой информации, например, две статьи в книжном указателе, ссылающиеся друг на друга, это не обязательно означает, что круговая ссылка совершенно бесполезна. Словари, например, по определению всегда являются круговой ссылкой, поскольку все слова в словаре определяются через другие слова, но при этом словарь остается полезным справочным пособием. Предложения, содержащие круговые ссылки, все равно могут быть осмысленными:

Ее брат подарил ей котенка; его сестра поблагодарила его за это. – это круговая конструкция, но не лишенная смысла. Более того, можно утверждать, что самоссылка является необходимым следствием закона непротиворечия Аристотеля, фундаментальной философской аксиомы. С этой точки зрения, без самоссылки логика и математика становятся невозможными или, по крайней мере, теряют свою полезность.

В электронных таблицах

Круговые ссылки также возникают в электронных таблицах, когда две ячейки зависят от результатов друг друга. Например, если значение в ячейке A1 должно быть получено путем прибавления 5 к значению в ячейке B1, а значение в ячейке B1 – путем прибавления 3 к значению в ячейке A1, то вычислить значения невозможно. (Даже если задано A1:=B1+5 и B1:=A1+3, круговая ссылка все равно присутствует. Тот факт, что A1=3 и B1=2 удовлетворяют обеим формулам, не имеет значения, поскольку существует бесконечно много других возможных значений A1 и B1, которые также могут их удовлетворять.) Круговые ссылки в рабочих листах могут быть очень полезным приемом для решения неявных уравнений, таких как уравнение Кольбрука и многие другие, которые в противном случае потребовали бы трудоемких алгоритмов Ньютона-Рафсона в VBA или использования макросов. Важно различать процессы, содержащие круговую ссылку, те, которые не поддаются вычислению, и те, которые представляют собой итерационные вычисления с конечным результатом. Последние могут не работать в электронных таблицах, не предназначенных для их обработки, но при этом остаются логически корректными.