编辑代码

//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
// console.log("Hello world!            -  js.jsrun.net ");

function fn(pices = []) {
    let ret = [];
    let used = {};
    pices.sort();
    function traceBack(result) {
        if (result.length === pices.length && ret.indexOf(result) < 0) {
            ret.push(result);
            return;
        }
        for(let i = 0; i < pices.length; i++) {
            if (used[i]) continue;
            result += pices[i];
            used[i] = true;
            traceBack(result);
            result = result.slice(0, result.length - 1);
            used[i] = false;
        }
    }
    traceBack('')
    console.log(ret);
}

fn(['a', 'b', 'c'])

fn(['a', 'b', 'a'])