###### 传达不到的感情已经不需要了

2019-03-28 16:29 阅读 354

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

20

RT

{
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];
}

• 点赞
• 写回答
• 关注问题
• 收藏
• 复制链接分享

#### 2条回答默认 最新

我已经很详细回答过了

点赞 评论 复制链接分享
• qq_39310287 2019-03-28 17:32
``````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;
}
``````
点赞 评论 复制链接分享