[易语言源码]说明:
【排列原理】
比如abc的组合类型 abc acb bac bca cab cba.
分析: 我们当然可以写三个嵌套的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
【组合】效率会低,但够用
[易语言源码]下载:
|
|
|
|
|
|