Java与Python:为什么相同的代码返回不同的输出?

Java与Python:为什么相同的代码返回不同的输出?,java,python,Java,Python,我不明白,为什么完全相同的Python代码在Java中给出不同的结果。我的意思是,这两种语言的数组处理是否有任何差异,或者我在下面的代码中遗漏了什么 在以下代码中(即,尝试求解),java 接受而拒绝Python。我检查了可能的失败案例:对于uniquepath(7,3)Python返回结果7,而Java返回28(这是正确的答案) 我试着调试并找出导致差异的代码中可能存在的差异,但没有成功 有人能为我的行为或我的实现中的任何错误提供一些见解吗?多谢各位 **Java代码**:: class So

我不明白,为什么完全相同的Python代码在Java中给出不同的结果。我的意思是,这两种语言的数组处理是否有任何差异,或者我在下面的代码中遗漏了什么

在以下代码中(即,尝试求解),java 接受而拒绝Python。我检查了可能的失败案例:对于
uniquepath(7,3)
Python返回结果7,而Java返回28(这是正确的答案)

我试着调试并找出导致差异的代码中可能存在的差异,但没有成功

有人能为我的行为或我的实现中的任何错误提供一些见解吗?多谢各位

**Java代码**::

class Solution {
    public int uniquePaths(int m, int n) {
        int[][] dp = new int[m+1][n+1];


        return pathHelper(1,1,m, n, dp);
    }

    private int pathHelper(int loc_x, int loc_y, int m, int n, int[][] dp){
        if(loc_x==m && loc_y==n)return 1;

        if(loc_x >m || loc_y>n)return 0;

        if(dp[loc_x][loc_y] != 0)return dp[loc_x][loc_y];

        int count = pathHelper(loc_x + 1, loc_y, m, n, dp) + pathHelper(loc_x, loc_y+1, m, n, dp) ;

        dp[loc_x][loc_y] = count;

        return count;


    }
}
Python代码

class Solution(object):
    def uniquePaths(self, m, n):
        dp = [[0]*(n+1)]*(m+1)

        return self.pathHelper(1,1,m, n, dp)

    def pathHelper(self, loc_x, loc_y,  m, n, dp):
        if(loc_x==m and loc_y==n):
            return 1

        if(loc_x >m or loc_y>n):
            return 0


        if(dp[loc_x][loc_y] != 0):
            return dp[loc_x][loc_y]

        count = self.pathHelper(loc_x + 1, loc_y, m, n, dp) + self.pathHelper(loc_x, loc_y+1, m, n, dp)

        dp[loc_x][loc_y] = count

        return count


dp=[[0]*(n+1)]*(m+1)
不是在Python中定义2D列表的正确方法。改为使用此选项:
dp=[[0]*(n+1)表示范围内(m+1)]

变量和函数名称应在带有下划线的
小写字母后面。if语句周围的括号是不必要的(我建议使用某种linter,它们很棒)。0和1返回值表示什么?