首页 > 解决方案 > 为什么我的 leetcode 递归回溯方法使用这样的参数是错误的?

问题描述

我试图通过以下方法使用递归回溯问题来解决 Leetcode JumpGame。这是错误的,但我的答案只是一个与解决方案不同的变量名。我在递归中使用了“位置”而不是“下一个位置”。你能帮我解释一下原因吗?

我的代码:

class Solution {
    public boolean canJump(int[] nums) {
        int location=0;
        int end=nums.length-1;
        return backtrack(nums,location,end);
    
    }
    private boolean backtrack(int[] nums, int location, int end){
        //end condition
        if(location==end){
           return true;
        }
        //recursion 
        for(int i=1;i<=nums[location];i++){
            location=Math.min(location+i,end);  //jump! location updated
            if(backtrack(nums,location,end)){
                return true;
            }
        }
        return false;
    }
}

解决方案:

public class Jumpgame55 {
    public boolean canJump(int[] nums) {
        int location = 0;
        int end = nums.length - 1;
        return backtrack(nums, location, end);

    }

    private boolean backtrack(int[] nums, int location, int end) {
        //end condition
        if (location == end) {
            return true;
        }
        //recursion
        for (int i = 1; i <= nums[location]; i++) {
            int nextlocation = Math.min(location + i, end);  //jump! location updated
            if (backtrack(nums, nextlocation, end)) {
                return true;
            }
        }
        return false;
    }
}

标签: javarecursionrecursive-backtracking

解决方案


推荐阅读