function swap(a, i, j) { if (i != j) { var temp = a[i]; a[i] = a[j]; a[j] = temp; } } function show(a) { document.write(a + "<br />"); } function perm(a) { (function fn(n) { //为第n个位置选择元素 for (let i = n; i < a.length; i++) { swap(a, i, n); if (n + 1 < a.length - 1) //判断数组中剩余的待全排列的元素是否大于1个 fn(n + 1); //从第n+1个下标进行全排列 else show(a); //显示一组结果 swap(a, i, n); } })(0); } perm([1,1,1])