如何纠正矩阵对角线上计数相等项的递归实现?

时间:2017-10-22 21:31:09

标签: java matrix

这种用于计算n×n矩阵的相等元素数的递归方法不起作用。从调试它继续返回相同的值,停止计数并保持i和j等于1.帮助apreciated!

private static int checkSecDiag(int i,int j,int count,int col,char[][] board){
    if(i == col-1)
        return count;
    if(board[i][j] == board[i+1][j-1]) count ++;
    i++;
    j--;
    checkSecDiag(i,j,count,col,board);
    return count;
}

1 个答案:

答案 0 :(得分:1)

您的代码忽略了递归调用的返回值。

您根本不应该传递count,并按如下方式更改实施:

private static int checkSecDiag(int i, int j, int col, char[][] board){
    if(i == col-1)
        return 0;
    return checkSecDiag(i+1, j-1, col, board)
         + ((board[i][j] == board[i+1][j-1])) ? 1 : 0);
}

这个实现的技巧在最后一行:你返回递归步骤返回的任何内容,如果彼此相邻的棋盘项是相同的,则添加一个。