下你所需,载你所想!
汇集开发技术源码资料

任意字母的【排列】【组合】

:49.664KB :1 :2023-01-29 16:31:58

部分简介

分析: 我们当然可以写三个嵌套的for循环去取,但是如果是abcd的组合呢? 还要修改代码添加一层for。 那如果是n个字母呢? 你又要手动添加多少层for呢?
所以需要一个忽视字母个数的实现。我们知道多层for(每次for里面的处理还类似)那么可以升华成递归调用。这里我们用递归解决。
以abc为例
(第一层递归里) 取a, 给第二层传bc进去(同时告诉第二层,截止第一层字符串组合是a)
(第二层递归里) 取b,给第三层传c进去(同事告诉第三层,截止第二层字符串组合出的是ab)
(第三层递归里) 取c。 发现这一层只有一个c可以取,那么在第二层字符串组合里面加入c,return。 ---->此时完成一种排列组合: abc
(第一层递归里) 取a, 给第二层传bc进去(同时告诉第二层,截止第一层字符串组合是a)
(第二层递归里) 取c,给第三层传b进去(同事告诉第三层,截止第二层字符串组合出的是ac)
(第三层递归里) 取b。 发现这一层只有一个b可以取,那么在第二层字符串组合里面加入b,return。 ---->此时完成一种排列组合: acb
(第一层递归里) 取b, 给第二层传ac进去(同时告诉第二层,截止第一层字符串组合是b)
(第二层递归里) 取a,给第三层传c进去(同事告诉第三层,截止第二层字符串组合出的是ba)
(第三层递归里) 取c。 发现这一层只有一个c可以取,那么在第二层字符串组合里面加入c,return。 ---->此时完成一种排列组合:bac

热门推荐

相关文章