JavaRush /Blog Java /Random-MS /Rekursi secara ringkas
vinsler
Tahap

Rekursi secara ringkas

Diterbitkan dalam kumpulan
Apakah rekursi di Jawa, sejenis omong kosong yang lengkap dan tidak dapat difahami, mari kita bincangkannya.
Rekursi secara ringkas - 1
Contoh:
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);
            }
        }
Anda boleh menyalin kod ini dan mengujinya sendiri. Penerangan tentang apa yang berlaku di dalam dengan pembolehubah: pada mulanya 15, 9 dibahagikan 15 / 9 = 1, baki 6 , jika terdapat baki, maka fungsi baru dilancarkan, tetapi nilai akan sudah 9, 6(dari baki) dibahagikan 9 / 6 = 1, baki 3 , jika terdapat baki , maka fungsi baru dilancarkan, tetapi nilai sudah akan 6, 3(dari baki) dibahagikan 6 / 3 = 2, baki 0 jika tidak ada baki, nombor kedua adalah output daripada fungsi 3 . Sekarang mari kita lihat semuanya dengan lebih terperinci, untuk saya nenek.
  1. Rekursi dalam Java menjalankan fungsi dari dalam fungsi itu sendiri.
  2. Apabila fungsi dilancarkan, semua yang dilakukan di dalam fungsi dipadamkan dan fungsi baharu dilancarkan, dengan parameter baharu.
Dalam erti kata lain, jika anda melihat perkataan pelancaran fungsi yang sama [rec], kemudian ambil fungsi ini pada awal penerangannya, pindahkan parameter yang dibekalkan ke sana dan lihat apa yang berlaku seterusnya. Itu sahaja penjelasannya. Kami menjalankan fungsi, menetapkan parameter tertentu di dalam, di mana sama ada rekursi dimulakan atau beberapa hasil dikembalikan. Itulah rahsianya. PS: Saya menulis hanya dari kepala saya, serta-merta dan membantu rakan untuk satu perkara, jadi semua kritikan dan penambahbaikan dialu-alukan. )))
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION