修改递归bug，增加测试