To be fair, recursive CTEs are somewhat a blessing when you need to compute transitive closures.  It is just unfortunate that they were designed as generative constructs (= you can create and recur on rows out of thin air rather than only products of other finite relations).