java的for循环能不能直接转换成递归

RT
想把以下代码转换成递归,但是会递归套递归我的逻辑就乱了,想不出来怎么做,谁能帮我改一下

```public static int shortestRoad(int grids[][])
{
int dp[][]=new int [grids.length][grids[0].length];
dp[0][0]=grids[0][0];
for(int i=1;i<grids.length;i++)
{
dp[i][0]=dp[i-1][0]+grids[i][0];

}
for(int j=1;j<grids[0].length;j++)
{
dp[0][j]=dp[0][j-1]+grids[0][j];

}
for(int i=1;i<grids.length;i++)
for(int j=1;j<grids[0].length;j++)
{
dp[i][j]=Math.min(dp[i-1][j], dp[i][j-1])+grids[i][j];
}

return dp[grids.length-1][grids[0].length-1];
}

https://ask.csdn.net/questions/715182
我已经很详细回答过了

public static int shortTestRoad(int grids[][]){
        int dp[][] = new int [grids.length][grids[0].length];

        outRecursion(0, dp, grids);

        return dp[grids.length-1][grids[0].length-1];
    }

    //内层迭代
    public static void inRecursion(int i, int j, int dp[][], int grids[][]){
        //若此时计算第一行的值
        if (i == 0) {
            if (j == 0) {
                dp[i][j] = grids[i][j];
                j++;
                inRecursion(i, j, dp, grids);
            }else if (j<grids[0].length) {              
                dp[i][j] = grids[i][j] + dp[i][j-1];                
                j++;
                inRecursion(i, j, dp, grids);
            }
        }else{
            if (j == 0) {
                dp[i][j] = dp[i-1][j] + grids[i][j];
                j++;
                inRecursion(i, j, dp, grids);
            }else if (j < grids[0].length) {
                dp[i][j]=Math.min(dp[i-1][j], dp[i][j-1])+grids[i][j];
                j++;
                inRecursion(i, j, dp, grids);
            }
        }
        return;
    }

    //外层循环
    public static void outRecursion(int i,int dp[][], int grids[][]) {
        if (i < grids.length) {
            inRecursion(i, 0, dp, grids);
            i++;
            outRecursion(i, dp, grids);
        }
        return;
    }