java遞歸

来源:https://www.cnblogs.com/renxixao/archive/2019/09/04/11456669.html
-Advertisement-
Play Games

遞歸:方法定義中調用方法本身 如果是方法的嵌套調用 這不是遞歸基本思想就是“自己調用自己” 一個使用遞歸技術的方法將會直接或者間接的調用自己 幾個應註意的點: 遞歸一定要有出口否則就是死遞歸 遞歸的次數不能太多 否則就記憶體溢出 構造方法不能遞歸使用 例: 遞歸求n的階乘 有一對兔子,從出生後第3個月 ...


 遞歸:方法定義中調用方法本身    如果是方法的嵌套調用 這不是遞歸
基本思想就是“自己調用自己” 一個使用遞歸技術的方法將會直接或者間接的調用自己
 幾個應註意的點:
  遞歸一定要有出口否則就是死遞歸
  遞歸的次數不能太多 否則就記憶體溢出
  構造方法不能遞歸使用

例:

public class DiGuiDemo {
    // public DiGuiDemo() {
    // DiGuiDemo();
    // }
}

遞歸求n的階乘

public class DiGuiDemo {
    public static void main(String[] args) {
        int jc = 1;
        for (int x = 2; x <= 5; x++) {
            jc *= x;
        }
        System.out.println("5的階乘是:" + jc);
        
        System.out.println("5的階乘是:"+jieCheng(5));
    }
    
    /*
     * 做遞歸要寫一個方法:
     *         返回值類型:int
     *         參數列表:int n
     * 出口條件:
     *         if(n == 1) {return 1;}
     * 規律:
     *         if(n != 1) {return n*方法名(n-1);}
     */
    public static int jieCheng(int n){
        if(n==1){
            return 1;
        }else {
            return n*jieCheng(n-1);
        }
    }
}


有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問第二十個月的兔子對數為多少?
分析:我們要想辦法找規律  兔子對數

第一個月:     1
第二個月:    1
第三個月:    2
第四個月:    3    
第五個月:    5
第六個月:    8
由此可見兔子對象的數據是:  1,1,2,3,5,8...
從第三項開始,每一項是前兩項之和

public static int fib(int n) {
        if (n == 1 || n == 2) {
            return 1;
        } else {
            return fib(n - 1) + fib(n - 2);
        }
    }
}

 

把E:\JavaSE目錄下所有的java結尾的文件的絕對路徑給輸出在控制台

private static void getAllJavaFilePaths(File srcFolder) {
      // 獲取該目錄下所有的文件或者文件夾的File數組
      File[] fileArray = srcFolder.listFiles();

      // 遍歷該File數組,得到每一個File對象
      for (File file : fileArray) {
          // 判斷該File對象是否是文件夾
          if (file.isDirectory()) {
              getAllJavaFilePaths(file);
          } else {
              // 繼續判斷是否以.java結尾
              if (file.getName().endsWith(".java")) {
                  // 就輸出該文件的絕對路徑
                  System.out.println(file.getAbsolutePath());
              }
          }
     }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參照網上的一個案例“參照的為繪製的是一個動態的圓環”,現在我的需求是改編成四分之三的圓環實現效果: 樣式展示 canvas繪圖基本操作設置就可以參考源代碼鏈接:原文:https://blog.csdn.net/qq_21058391/article/details/76691047 > 引用的上文源 ...
  • 一、MongoDB資料庫 1、概念 資料庫(DataBase)是一個按照數據結構進行數據的組織,管理,存放數據的倉庫。 2、關係型資料庫 按照關係模型存儲的資料庫,數據與數據之間的關係非常密切,可以實現跨數據表查詢數據,占用更少的硬碟實現更多的數據存儲 T SQL標準的結構化查詢語言,是關係型資料庫 ...
  • 1.代碼生成器: [正反雙向](單表、主表、明細表、樹形表,快速開發利器)freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁面、建表sql腳本、處理類、service等完整模塊2.多數據源:(支持同時連接無數個資料庫,可以不同的模塊連接不同數的據庫)支持N個數據源3.阿裡資料庫連 ...
  • Builder 模式定義 Builder 模式中文叫作建造者模式,又叫生成器模式,它屬於對象創建型模式,是將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。建造者模式是一步一步創建一個複雜的對象,它允許用戶只通過指定複雜對象的類型和內容就可以構建它們,用戶不需要知道內部的具體 ...
  • 前言 在開發十萬博客系統的的過程中,前面主要分享了爬蟲、緩存穿透以及文章閱讀量計數等等。爬蟲的目的就是解決十萬+問題;緩存穿透是為了保護後端資料庫查詢服務;計數服務解決了接近真實閱讀數以及資料庫服務的壓力。 架構圖 限流 就拿十萬博客來說,如果存在熱點文章,可能會有數十萬級別的併發用戶參與閱讀。如果 ...
  • 應用矩陣快速冪運算可以解決遞推問題。在實際應用中,有時候題目並沒有直接給出遞推式,需要認真分析問題,找出遞推式,然後再利用矩陣快速冪運算加快問題的求解。 【例1】程式閱讀理解。 有如下的C語言程式: #include <stdio.h>int main(){ int n,m,f,i; while(s ...
  • 本文介紹使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一個demo,實現數據從資料庫中查詢返回到頁面進行展示的過程。 技術選型:SpringMVC+Spring+MyBatis+MySql+Maven+JSP+IDEA+Tomcat7+JDK1.8+Navicat ...
  • 一、方法 1.方法的基礎語法 (1)例子 上面的程式雖然實現了功能,但是程式的復用性很差,因此我們需要引入方法的概念(其實就是python中的函數功能) 我們編寫方法來重構上面的代碼 (2)方法的本質是什麼: 方法就是一段代碼片段,並且這段代碼片段可以完成某個特定的功能,並且可以被重覆利用。 (3) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...