Так?
1. Находим первый попавший тег и его позицию
2. Передаем этот тег и его позицию в функцию
3. В функции ищем тег-пару с переданной позиции
4. Если находим другой закрывающий тег, делаем return false;
5. Если находим закрывающий тег-пару - return true;
6. Если находим другой открывающий тег - вызываем себя с эитм тегом и его позицией.
7. Если хоть раз вернулся return false - ошибка