Java 数组查找法
我需要理解递归的指导 以下是我所拥有的:Java 数组查找法,java,arrays,recursion,Java,Arrays,Recursion,我需要理解递归的指导 以下是我所拥有的: public class ArrayMember { public static void main(String[] args) { int index = 0; int [] arr = {1, 5, 6, 2}; System.out.println(member(arr, index)); } public static String member(int []
public class ArrayMember
{
public static void main(String[] args)
{
int index = 0;
int [] arr = {1, 5, 6, 2};
System.out.println(member(arr, index));
}
public static String member(int [] arr, int index)
{
if(index == arr.length)
return str;
str = index + "\t" + str + "\n";
return str + member(arr, index+1);
}
}
正如你所看到的,这永远不会一直到20,并且总是打印“否”。我很确定有一个for循环不能达到这个目的,但是我想不出任何其他的方法来实现它。任何帮助都将不胜感激。您的代码有两个问题:
str
,即使您在i
位置找到元素,当位置i+1
中有不同的元素时,您也会用覆盖str
,有效地将str
设置为该元素是否是数组中的最后一个元素。找到值后,尝试从循环中断开,或在默认情况下将str
初始化为“否”
,并仅在找到值时将其设置为“是”
index==arr.length
您并不是在测试从1到20的所有数字。您可以改为检查index>arr[arr.length-1]
,即检查它是否大于列表中的最后一个元素,但这仅在列表排序时有效函数成员(arr、num、index)->bool:
如果索引不超过数组
返回arr[index]等于num或member(arr,num,index+1)
其他的
返回错误
arr={2,4,6,8,10,12,14,16,18,20}
我从1岁到20岁
打印i,成员(arr,i,0)
您的代码有两个问题:
str
,即使您在i
位置找到元素,当位置i+1
中有不同的元素时,您也会用覆盖str
,有效地将str
设置为该元素是否是数组中的最后一个元素。找到值后,尝试从循环中断开,或在默认情况下将str
初始化为“否”
,并仅在找到值时将其设置为“是”
index==arr.length
您并不是在测试从1到20的所有数字。您可以改为检查index>arr[arr.length-1]
,即检查它是否大于列表中的最后一个元素,但这仅在列表排序时有效函数成员(arr、num、index)->bool:
如果索引不超过数组
返回arr[index]等于num或member(arr,num,index+1)
其他的
返回错误
arr={2,4,6,8,10,12,14,16,18,20}
我从1岁到20岁
打印i,成员(arr,i,0)
您的代码有两个问题:
str
,即使您在i
位置找到元素,当位置i+1
中有不同的元素时,您也会用覆盖str
,有效地将str
设置为该元素是否是数组中的最后一个元素。找到值后,尝试从循环中断开,或在默认情况下将str
初始化为“否”
,并仅在找到值时将其设置为“是”
index==arr.length
您并不是在测试从1到20的所有数字。您可以改为检查index>arr[arr.length-1]
,即检查它是否大于列表中的最后一个元素,但这仅在列表排序时有效函数成员(arr、num、index)->bool:
如果索引不超过数组
返回arr[index]等于num或member(arr,num,index+1)
其他的
返回错误
arr={2,4,6,8,10,12,14,16,18,20}
我从1岁到20岁
打印i,成员(arr,i,0)
您的代码有两个问题:
str
,即使您在i
位置找到元素,当位置i+1
中有不同的元素时,您也会用覆盖str
,有效地将str
设置为该元素是否是数组中的最后一个元素。找到值后,尝试从循环中断开,或在默认情况下将str
初始化为“否”
,并仅在找到值时将其设置为“是”