Groovyでtrampolineを使って末尾再帰最適化 ref: http://qiita.com/saba1024/items/b84cab1496db4bff9e1a