関数プログラミングの勉強なら、再帰を直接使わず高階関数を使って、
再帰を陽に書くのを減らしてゆく、というのが王道。