我正在尝试创建递归方法,该方法返回等于X的元素的索引。 我们有一些数组和一个数字X.我需要将X与数组中的所有数字进行比较,并返回等于X的数字索引。
这是我的试用版:
public static void main(String[] args) throws Exception {
final List<Integer> numbers = new ArrayList<Integer>() {
{
add(3);
add(4);
add(6);
add(1);
add(9);
}
};
final int x = 3;
}
答案 0 :(得分:2)
所以findSmallest
返回最小的元素。如果我们找到您要找的元素时停止怎么办?
像这样:
private static final int findSame(Iterator<Integer> iterator, Integer x, int idx) {
if (!iterator.hasNext()) {
// Don't have a next! return -1
return -1;
}
if (iterator.next().equals(x)) {
// Found it!
// Let's give back the current index.
return idx;
} else {
// Not here, lets check the rest.
return findSame(iterator, x, idx+1);
}
}
所以你只是第一次用idx
0来调用它。
由于您没有使用有效的语法,因此您将遇到其他问题。
主要代码应为:
final List<Integer> numbers = Arrays.asList(3, 4, 6, 1, 9);
final Integer x = Integer.valueOf(3);
System.out.println(findSame(numbers.iterator(), x, 0));
答案 1 :(得分:1)
如果您尝试这样做,则会有非常 非常 的简单代码。相信我。以下是Java代码的细分:
private static int FindIt(int[] arr, boolean it, int index, int want)
{
//want is the wanted number
//The integer index should be set at 0 in the beginning. It is the index of the array
//The boolean it represents if we find it.
//The base case
if (it){
return index;
}
else if (index == arr.length){
//The usual not found factor
return -1;
}
else{
//Advance it if you don't find it
if (arr[index] == want){
return index;
}
else{
return FindIt(arr, it, index+1);
}
}
}
实际上你需要做的就是这些。我希望它有所帮助!
答案 2 :(得分:0)
以下是代码中的一些编辑。 它可以用更简单的方式编写,而不使用ArrayList。
import java.util.ArrayList;
import java.util.List;
class RecursionForSearching {
static List<Integer> numbers;
public static void main(String[] args) throws Exception {
numbers = new ArrayList<Integer>() {
{
add(3);
add(4);
add(6);
add(1);
add(9);
}
};
int x = 1;
int result = searchNum(x, 0);
if (result != -1) {
System.out.println("There is x in the array, and the index is: " + result);
System.out.println("There is x in the array, and the Position is: " + (result + 1));
} else
System.out.println("X is not found in List");
}
private static int searchNum(int x, Integer index) {
if (index == numbers.size())
return -1;
if (!(numbers.get(index) == x)) {
return searchNum(x, index + 1);
}
return index;
}
}