再帰だと一気に全部 return とかできないから、関係箇所全部に終了判定書かなきゃいけない。
throw 一発で書くほうがずっと楽だから、実行効率と開発効率のトレードオフだね。