以下是一个可以实现你要求的 JavaScript 函数 perm(n)

function perm(n) {
  // 创建一个数组来存储结果
  var result = [];

  // 辅助函数,用于生成排列
  function permute(arr, m) {
    // 当 m 等于 0 时,将当前排列添加到结果数组中
    if (m === 0) {
      result.push(arr.slice());
    } else {
      // 对每个位置进行排列
      for (var i = 0; i < m; i++) {
        // 交换第 i 个元素和最后一个元素
        var temp = arr[i];
        arr[i] = arr[m - 1];
        arr[m - 1] = temp;

        // 递归生成剩余位置的排列
        permute(arr, m - 1);

        // 恢复数组的原始顺序
        temp = arr[i];
        arr[i] = arr[m - 1];
        arr[m - 1] = temp;
      }
    }
  }

  // 创建初始数组
  var arr = [];
  for (var i = 1; i <= n; i++) {
    arr.push(i);
  }

  // 生成排列
  permute(arr, n);

  // 返回结果数组
  return result;
}

// 测试例子
console.log(perm(2)); // [[1, 2], [2, 1]]

这个函数使用递归的方式生成排列。首先,我们创建一个辅助函数 permute,它接受一个数组 arr 和一个整数 m,表示要生成排列的数组和剩余位置的数量。当 m 等于 0 时,我们将当前排列添加到结果数组中。否则,我们对每个位置进行排列,通过交换第 i 个元素和最后一个元素,然后递归生成剩余位置的排列。在递归结束后,我们需要恢复数组的原始顺序,以便继续生成其他排列。

perm 函数中,我们首先创建一个初始数组 arr,包含从 1 到 n 的数字。然后,我们调用辅助函数 permute 来生成排列。最后,我们返回结果数组。

你可以通过调用 perm 函数并传入数字 n 来测试它的功能。在上面的例子中,我们传入 2,并打印结果数组到控制台。输出结果为 [[1, 2], [2, 1]],即所有排列的情况数组

帮我编写一个js函数 permn 传入数字n 返回所有排列的情况数组比如传入 2 返回 12 2 1

原文地址: https://www.cveoy.top/t/topic/hUZZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录