为了账号安全,请及时绑定邮箱和手机立即绑定

javascript中怎么读懂递归函数,读懂递归函数的代码逻辑?

javascript中怎么读懂递归函数,读懂递归函数的代码逻辑?

月关宝盒 2018-10-11 18:15:01
一直不能读懂javascript中的递归函数,不清楚里面的层层调用是什么逻辑?每次碰到递归函数就会晕。比如下面一个javascript组合排序的代码,里面就是递归实现:看了很多遍,都不知道它里面的实现逻辑是什么?也不知道怎么打断点分析代码,就是感觉反复调用,让人很晕,怎么办?求javascript大神就拿上面这个例子帮忙分析下,代码逻辑怎么实现的?如果能读懂递归函数,后面再慢慢尝试写递归函数。
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

var arr = ['A','B','C','D',"E","F","G"];


function show(arr,num){

    debugger

    var resultNum = 0;

    var iNow = 1;

    

    if(num==1){

        return arr.length;

    }

    

    function change(arr,iNow){

        

        for(var i=0;i<arr.length;i++){

            

            var result = arr.concat();

            result.splice(i,1);


            if( iNow == num ){

                resultNum += result.length;

            }else{

                change(result,iNow+1);

            }

        }

    }

    change(arr,iNow+1);

    return resultNum;

}


console.log(show(arr,5));

打开控制台 执行一下, 按F10 逐步执行.

某些人说调不出, 只能说头脑逻辑性不够. 不能怪方法不行.
首先接触到一个递归, 先看函数内部做了什么, 看不懂, 调试一遍,
看内部的不懂的函数或分支 做了什么.在不明白, 说明你的智商只如嘲讽一般.

其次这个函数目的就是算阶乘.
!arr.length/!(arr.length - 5) 叹号为阶乘


查看完整回答
反对 回复 2018-11-07
  • 1 回答
  • 0 关注
  • 481 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信