別に一般的な意見では?以下関数プログラミング実践入門より引用:

再帰関数は、物事を数学的に捉えた定義通りに書けることが多いためわかりやすいのですが、Haskellに慣れてくると直接的に再帰関数を書くのは避けるようになっていきます。
それは、再帰関数は便利であるのと同じくらい、危険でもあるからです。
停止しない再帰関数をうっかり書いてしまうこともあるでしょう。

とくに再帰関数を直接書くということは、時に必要となるものの、アセンブラを直接書くような低級な行為と認識されます。
データの構造に依存し、それを気にしたプログラミングを要求されるからです。
理想的にはデータの構造を気にせずに、全体に丸々変換をかけられるような関数だけを組み合わせて望む処理を書きたいのです。

そのために、再帰関数を直接利用せずにどうするかというと、次節で説明する高階関数をうまく利用するようになっていきます。

リストなど多くの再帰的に定義されたデータ構造に対しては、それを便利に利用するための計算パターンが用意されており、それらの計算パターンは高階関数として与えられています。
自分で再帰を書くのではなく、再帰部分は高階関数がやってくれるようになっています。