猿问

谁能给我讲讲关于递归的东西。。好难理解啊。。

/**

 * Created by LR on 2016/12/7.

 */

function permutate(str) {

    var result = [];

    if(str.length == 1){

        return [str]

    }else {

        var preResult = permutate(str.slice(1))

        for (var j = 0; j < preResult.length; j++) {

            console.log(preResult[j])

            for (var k = 0; k < preResult[j].length+1; k++) {


                var temp=preResult[j].slice(0,k)+str[0]+preResult[j].slice(k);

                result.push(temp);

            }

        }

        console.log("!")

        console.log(result)

        return result

    }


}


permutate('abc');

第一次是abc 进入函数,然后长度大于1进入else;
所以这里就应该是
var preResult = permutate("bc")
之后呢??我就想到bc进入函数,长度大于一
之后就 var preResult = permutate("c")
长度等于1了 然后就返回一个c 这个for循环是怎么执行的?? 谁能告诉我一下。。。
这个是全排列的算法

慕田峪7331174
浏览 671回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答