JavaRush /Java Blog /Random-TW /簡而言之,遞迴
vinsler
等級 35

簡而言之,遞迴

在 Random-TW 群組發布
Java中的遞歸是什麼,完全是一種難以理解的廢話,讓我們來回顧一下。
簡而言之,遞歸 - 1
例子:

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);
            }
        }
您可以複製此程式碼並自行測試。變數內部發生的情況的描述:初始 15, 9 除法15 / 9 = 1,餘數6 ,如果有餘數,則啟動新函數,但值已經 9, 6(從餘數中)除法9 / 6 = 1,餘數3 ,如果有餘數,然後啟動新函數,但值已經被 6, 3(從餘數)除6 / 3 = 20 如果沒有餘數,則從函數輸出第二個數字 3 。現在讓我們更詳細地看看所有內容,對於我的祖母。
  1. Java 中的遞歸是從函數本身內部運行函數。
  2. 當函數啟動時,函數內所做的所有操作都會被刪除,並啟動一個帶有新參數的新函數。
換句話說,如果您看到相同函數 [rec] 的啟動一詞,則在其描述的最開始處獲取該函數,將提供的參數傳輸到那裡,然後看看接下來會發生什麼。這就是所有的解釋。我們運行該函數,在內部設定某些參數,在這些參數中要么開始遞歸,要么返回一些結果。這就是全部的秘密。PS:我只是憑自己的想法寫的,並且幫助了一位朋友一件事,所以歡迎所有批評和改進。)))
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION