普通の再帰を末尾再帰に作り変えることが出来たらループにするのは後一息なんだよね。