重新编辑了下,有几个边界情况考虑错了