Рекурсивный метод, который принимает в качестве параметра значения массива

166
10 октября 2021, 10:50

Тема - Рекурсия.

Для простоты понятия приведу такой пример. Имеется метод:

public static int method(int a, int b){
    while (b > 0){
        int swap = b;
        b = a % b;
        a = swap;
    }
    return a;
}

Этот метод принимает два значения а и b, совершает операции над ними и возвращает значения типа int.

Идём дальше.

Нужно совершить действия над 4-мя числами вот так, которые берутся из массива int.

method(a,method(b,method(c,d)));

Вот что получилось у меня:

public static int nod(int[] array){
    System.out.println("\nДлина массива = " + array.length);
    int nod = 0;
    for(int i = array.length - 1; i > 0; i--) {
        while (array[i] > 0) {
            int swap = array[i];
            array[i] = array[i-1] % array[i];
            array[i-1] = swap;
            nod = array[i-1];
        }
    }
    System.out.println("\nNOD = " + nod);
    return nod;
}

Но вот с рекурсией как быть. 4.2.2

Answer 1
public static int nod(int[] array, int index = 0) {
  // check that array has at least two elements
  // ...
  if (index < array.length - 1)
    return method(array[index], nod(array, index + 1));
  else
    return method(array[index], array[index + 1]);
}
Answer 2

Вот всё тело nod(), переделанное под рекурсию на скорую руку, возможно будут варианты лучше:

public static int nod(int[] array){
    System.out.println("\nДлина массива = " + array.length);
    int nod = method(array.length - 1, array);
    System.out.println("\nNOD = " + nod);
    return nod;
}
public static int method(int i, int[] array){
    if (array[i] <= 0) {
        return method(i - 1, array);
    }
    if (i == 0) {
        return array[i];
    }
    int swap = array[i];
    array[i] = array[i-1] % array[i];
    array[i-1] = swap;
    return method(i, array);
}
READ ALSO
Выскакивает TimeoutException com.rabbitmq.client.impl.ForgivingExceptionHandler.log

Выскакивает TimeoutException com.rabbitmq.client.impl.ForgivingExceptionHandler.log

второй день не получается победить ошибкусам таймаут по умолчанию 5 сек

99
Вывод данных в Java N-IDE

Вывод данных в Java N-IDE

Куда и как можно вывести полученный код в Java N-IDEЕсли это вощможно

103
Знаете ли вы где скачать сборку eclipse с sdk + adt?

Знаете ли вы где скачать сборку eclipse с sdk + adt?

я начинающий, хотел написать простенькую программу для android, но железо не позволяет пользоваться android studioЯ решил скачать eclipse

98