经典的回溯，递归实现，循环实现