一長一短。
それは編集するときの概念。
ブロック要素において、ある要素の子要素全体の幅を取得する、という時に、
ある要素は、子要素の幅を足し込んでいくと自分の幅を定義できる、
というシンプルな宣言になる。

ある要素の子要素が、ある要素そのものであった場合、これは再帰であるとしか言えないんじゃないか?
これを単なるループでリンクドリストで次の要素、前の要素から、今の深さと幅を取りながら、ある要素の時点で深さが戻ったので前の前の前の要素の幅は、今までの幅、と言うのはセンスない。

リンクドリストで処理するとしても、ブロック要素が来たので一段下がって終タグがきて一段上がるまで、を関数でまとめて処理するのであれば、
ブロック要素の中でブロック要素が来た場合はそれは再帰そのもの。

前に誤変換しながら書いた、コンテナがコンテナを内包する、ってのがまさにそう。
お前パーサ書いたこと無いだろ。