再帰が重いなら自分で配列をスタックに見立ててループの中でぶん回せば
いいじゃんって思うけど、そんな簡単に解決する問題じゃないの?