На одном из форумов была задача проверки сервером html, которую клиент мог использовать в сообщении. Нужно было проверять и вложенность и целостность.
Рекурсия при этом не обязательна, главное это правила, а проход циклом с использованием массива в качестве стека - первым вошел, последним вышел.
Там я писал на РНР, получая элементы с помощью рег. выражений, а на клиенте они уже есть как коллекция.