递归的解法，但是是参考了别人的解法