Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
461 views
in Technique[技术] by (71.8m points)

如何正确在递归中写for循环?

这是LeetCode的#### 55. 跳跃游戏

var canJump = function(nums) {
    let state = false;
    let length = nums.length-1;
    recur(length)
    //递归函数 num是位置 list是数组
    function recur(num){
        //终止条件 有0就结束
        if(num == 0){
            state = 0 ;
            return;
        }
        list = arrive(num);
        if(list.length == 0){
            return;
        }
        for(let i = 0; i < list.length; i++){
            recur(list[i]);
        }
    };
    //传递一个位置数字 返回可以到达的位置列表
    function arrive(num) {
        let list = [];
        for(let i = 0; i < num; i++){
            if(nums[i]+i == num){
                list.push(i)
            }
        }
        return list;
    }
    return state

};

应该循环两次 但是因为循环第一个内的递归不满足条件 后续的循环的第二次就不运行了 很迷惑 是因为递归不能用For吗


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

return了,要想继续递归,要执行 recur


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...