这种用于计算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;
}
答案 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);
}
这个实现的技巧在最后一行:你返回递归步骤返回的任何内容,如果彼此相邻的棋盘项是相同的,则添加一个。