#题目:
这里主要考虑的是无重复的全排列
比如: (1,2,3) 全排列为 [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]
#method 1
/*
- 简单地说:就是第一个数分别以后面的数进行交换
*E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b)
*然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc + acb.依次递归进行
*/
#method 2
采用迭代的方法真是感觉想出这个方法的人 牛逼
//再提供一个更为巧妙的全排列思路
/*
* 第 1 步:
当只有1个数字1的时候,只有一种组合
1
第 2 步:
当有两个数字1、2的时候,分别把 2 放到 1 的前面和后面,就可以得到下面两个组合
2 1
1 2
第 3 步.
当有三个数字1、2、3的时候,可以针对第 2 步中得到的两个组合,把 3 分别插入这两个组合之中。
对于组合 2 1,我们可以得到下面 3 个组合:
3 2 1
2 3 1
2 1 3
对于组合 1 2,我们可以得到下面 3 个组合:
3 1 2
1 3 2
1 2 3
于是我们一共得到了 6 个组合
第 4 步:
对于四个数字1、2、3、4,按照第 3 步中的做法,将 4 分别插入在第 3 步中得到的 6 个组合,最后我们可以得到 24 个组合
可用循环表示,真是方便极了
*/