Тема - Рекурсия.
Для простоты понятия приведу такой пример. Имеется метод:
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
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]);
}
Вот всё тело 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);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
второй день не получается победить ошибкусам таймаут по умолчанию 5 сек
я начинающий, хотел написать простенькую программу для android, но железо не позволяет пользоваться android studioЯ решил скачать eclipse