Qu'est-ce que la récursivité en Java, une sorte de connerie complète et incompréhensible, passons en revue.
Exemple:
public class Recursion {
public static void main(String[] args) {
System.out.println("Изначальный REC ( 15 , 9 )" );
System.out.println(rec(15,9)); // запускаем sout с возвращаемым функцией [rec] результатом
}
static int rec (int m, int n) { // передаем в функцию [rec] 2 числа
if(m % n == 0) { // если первое число [m] делится на второе число [n] нацело, то возвращаем его
System.out.println("Окончателное число " + n);
return n;
} else {
// если не делится нацело, то перезапускаем функцию и заносим в него другие аргументы :
// в качестве первого уже будет второе число [n],
// а в качестве второго будет остаток от деления первого[m] на второе[n] 15 / 9 = 1 (+ остаток 6)
System.out.println("Заносим в REC (" + n + " , " + m % n + ")");
return rec(n,m % n);
}
}
Vous pouvez copier ce code et le tester vous-même. Description de ce qui se passe à l'intérieur avec les variables : initialement 15, 9
divisé 15 / 9 = 1
, reste 6
, s'il y a un reste, alors la nouvelle fonction est lancée, mais les valeurs seront déjà 9, 6
(du reste) est divisée 9 / 6 = 1
, reste 3
, s'il y a un reste , alors la nouvelle fonction est lancée, mais les valeurs seront déjà 6, 3
(du reste) est divisée 6 / 3 = 2
, reste 0
s'il n'y a pas de reste, le deuxième nombre est sorti de la fonction 3
. Voyons maintenant tout plus en détail, pour mon grand-mère.
- La récursion en Java exécute une fonction à partir de la fonction elle-même.
- Lorsqu'une fonction est lancée, tout ce qui a été fait à l'intérieur de la fonction est effacé et une nouvelle fonction est lancée, avec de nouveaux paramètres.
GO TO FULL VERSION