再帰呼び出しに関してはここのZEXさんのコメントが参考になると思います https://miiverse.nintendo.net/posts/AYMHAAACAAADV0Z6zpVNUw?locale.lang=ja-JP