image.png

    1. 递归的终止条件
      1. 字母遍历完
    2. 程序终止条件
      1. 每一个字母的递归走完
    1. from typing import List
    2. class Solution:
    3. res = []
    4. def dfs(self, p, pb, level):
    5. if level == len(p) + 1:
    6. print(' '.join(self.res))
    7. return
    8. for i in range(len(p)):
    9. c = p[i]
    10. if pb[i] != True:
    11. self.res.append(c)
    12. pb[i] = True # 表示已经使用过了
    13. self.dfs(p, pb, level + 1)
    14. self.res.pop()
    15. pb[i] = False
    16. p = ['A', 'B', 'C']
    17. pb = [False, False, False]
    18. Solution().dfs(p, pb, 1)

    结果:
    A B C
    A C B
    B A C
    B C A
    C A B
    C B A