更严格的判断以及解决递归错误