Swiftにおける末尾再帰とCompilerによる最適化を探る