#java #recursion
Вопрос:
Я полный новичок в кодировании. Я пытаюсь изменить итерационный метод на рекурсивный. Я попытался изменить приведенный ниже метод totalNoRecursion на рекурсивный метод, но мои результаты не одинаковы для обоих методов. Цель метода состоит в том, чтобы найти первый индекс массива данных, в котором достигнута цель. Так, например, если цель равна 10, то индекс будет равен 3, так как 2 2 3 4 = 11. Или, если целевой показатель равен 5, возвращаемый индекс будет равен 2, так как 2 2 3 = 7. Если массив пуст или цель никогда не достигается после суммирования каждого элемента в массиве, он возвращает -1. Как я могу изменить свой метод totalRecursion, чтобы он работал правильно? Спасибо
public class totalRecursive{
private static int data[] = {2, 2, 3, 4, 6, 4};
public static void main (String[]args){
System.out.println(totalNoRecursion(10));
System.out.println(totalNoRecursion(4));
System.out.println(totalNoRecursion(1));
System.out.println(totalNoRecursion(100));
System.out.println(totalNoRecursion(3));
System.out.println("*********");
System.out.println(totalRecursion(data, 10,0,0));
System.out.println(totalRecursion(data, 4,0,0));
System.out.println(totalRecursion(data, 1,0,0));
System.out.println(totalRecursion(data, 100,0,0));
System.out.println(totalRecursion(data, 3,0,0));
}
public static int totalNoRecursion(int target){
int total = 0;
for(int i = 0; i < data.length; i ){
total = data[i];
if(target <= total)
return i;
}
return -1;
}
public static int totalRecursion(int [] data, int target, int total, int index) {
if(index == data.length)
return -1;
if(total > target)
return index -1;
return totalRecursion(data, target, total data[index], index 1);
}
}
Вывод:
3
1
0
-1
1
*********
3
2
0
-1
1
Ответ №1:
Просто используйте то же условие и в рекурсивном
public static int totalRecursion(int [] data, int target, int total, int index) {
if(index == data.length)
return -1;
if(target <= total)
return index-1;
return totalRecursion(data, target, total data[index], index 1);
}