java如何使用递归搜索2d数组中的元素
我有一个2d字符数组,我试图用递归找到一个特定的字符
public class Test {
char arry [][] = {{'1',' ','B'},
{'C','K','M'},
{'H','R','P'}
};
public Test(){
recursion(0,0,arry[0][0]);
}
private void recursion(int row, int col, char c) {
if(c==' '){
System.out.print("Location: " + row + " " + col );
}else
{
if(col+1<arry[0].length){
recursion(row,col,c);
}
//System.out.print(arry[0][1]);
}
}
public static void main(String[] args) {
new Test();
}
}
但这给了我一个堆栈溢出。如何使用递归在二维数组中查找元素
# 1 楼答案
# 2 楼答案
您的方法一直在用相同的值调用自己
更新您的值,然后再次将其发送到该方法。所以它可以在数组中寻找另一个元素
例如:
# 3 楼答案
在二维数组中搜索值的最简单方法是从(0,0)开始,在前进到下一行之前扫描整个列。当某个值与您要查找的匹配时,返回该位置
下面是一个例子
# 4 楼答案
看起来你的if语句没有正确执行。你是在检查
if c == " "
,尽管我认为你的意思是检查if array[row][col]==c
。而且,似乎从来没有实际增加row
和col
的值,因此递归不断地在自身上发生。由于递归值永远不会改变,而且检查也永远不会为真,这最终会导致堆栈溢出尝试以下几点: