账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JavaScript递归生成排列组合[已解决]
    16
    0

    背景
    我是做美团外卖的
    经常会回复顾客的评价
    每次都要手工打一次,太麻烦了
    就想自动生成一些简单的评价,直接复制就可以了
    结果真心是逻辑思维能力太差..怎么也过不了递归这一关.....试了快2个小时,还是解决不了

    数组

    var wordList = [
        ['热烈', '万分', '非常', ''],
        ['欢迎', '感谢', '谢谢'],
        ['您', '亲', '老板', '大神', ''],
        ['光临', '惠顾', '支持'],
        ['小店', '本店', '火女菜馆']
    ];

    问题
    怎么自动排列组合出来
    热烈欢迎您光临小店,热烈欢迎您光临本店....非常谢谢大神支持火女菜馆

    麻烦大家帮忙看看这个题怎么解
    然后指出一下我究竟是哪里的问题?为什么就是想不出来怎么解这个题目,要通过哪些练习才可以自己处理这种问题呢?
    这感觉就像是初中做数学题一样,就是不知道怎么办...

    我的解法
    虽然是解出来了,但完全是靠猜的.没有思路,要是再遇到类似的递归问题,肯定还是没有思路.
    并且这个写法肯定不是最优解....还是上面的问题.请大家指教一下

    function combine(i, results, res) {
        for (var j = 0; j < wordList[i].length; j++) {
            var temp = res;
            res += wordList[i][j];
            if (wordList[i + 1]) combine(i + 1, results, res);
            else {
                results.push(res);
            }
            res = temp;
        }
    }
    var results = [];
    combine(0, results, '');
    console.log(results);
    看样子只适合做业务层面的浅编程啦...稍微要涉及到算法的东西都理解的很困难,一楼的那个效率要高好多
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    更多回答