"""javascript\nfunction perm(n) {\n // 创建一个数组来存储结果\n var result = [];\n\n // 辅助函数,用于生成排列\n function permute(arr, m) {\n // 当 m 等于 0 时,将当前排列添加到结果数组中\n if (m === 0) {\n result.push(arr.slice());\n } else {\n // 对每个位置进行排列\n for (var i = 0; i < m; i++) {\n // 交换第 i 个元素和最后一个元素\n var temp = arr[i];\n arr[i] = arr[m - 1];\n arr[m - 1] = temp;\n\n // 递归生成剩余位置的排列\n permute(arr, m - 1);\n\n // 恢复数组的原始顺序\n temp = arr[i];\n arr[i] = arr[m - 1];\n arr[m - 1] = temp;\n }\n }\n }\n\n // 创建初始数组\n var arr = [];\n for (var i = 1; i <= n; i++) {\n arr.push(i);\n }\n\n // 生成排列\n permute(arr, n);\n\n // 返回结果数组\n return result;\n}\n\n// 测试例子\nconsole.log(perm(2)); // [[1, 2], [2, 1]]\n"""\n\n这个函数使用递归的方式生成排列。首先,我们创建一个辅助函数 permute,它接受一个数组 arr 和一个整数 m,表示要生成排列的数组和剩余位置的数量。当 m 等于 0 时,我们将当前排列添加到结果数组中。否则,我们对每个位置进行排列,通过交换第 i 个元素和最后一个元素,然后递归生成剩余位置的排列。在递归结束后,我们需要恢复数组的原始顺序,以便继续生成其他排列。\n\n在 perm 函数中,我们首先创建一个初始数组 arr,包含从 1 到 n 的数字。然后,我们调用辅助函数 permute 来生成排列。最后,我们返回结果数组。\n\n你可以通过调用 perm 函数并传入数字 n 来测试它的功能。在上面的例子中,我们传入 2,并打印结果数组到控制台。输出结果为 [[1, 2], [2, 1]],即所有排列的情况数组。


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

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