recursive，list