欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

什么是遞歸?用Java寫(xiě)一個(gè)簡(jiǎn)單的遞歸程序

 更新時(shí)間:2021年02月19日 14:17:29   作者:小明  
這篇文章主要介紹了什么是遞歸?用Java寫(xiě)一個(gè)簡(jiǎn)單的遞歸程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

什么是遞歸?用Java寫(xiě)一個(gè)簡(jiǎn)單的遞歸程序

遞歸的定義

遞歸(recursion):以此類(lèi)推是遞歸的基本思想,將規(guī)模大的問(wèn)題轉(zhuǎn)化為規(guī)模小的問(wèn)題來(lái)解決。

遞歸的要素

自定義遞歸函數(shù),并確定函數(shù)的基本功能
例如Java從鍵盤(pán)輸入一個(gè)數(shù),求輸入這個(gè)數(shù)的階乘。這個(gè)時(shí)候把輸入的數(shù)字作為形參

int diGuiTest(int n ){
}

找到遞歸函數(shù)循環(huán)結(jié)束條件
在求階乘的時(shí)候,我們不妨做出如下思考,例如輸入的n是5,那么5!是5 * 4 3 * 2 * 1,那是不是可以寫(xiě)成
n
f(n-1)?,程序運(yùn)行過(guò)程如下:
5* f(4)
f(4)相當(dāng)于重新調(diào)用了函數(shù),形參為4
5 * 4* f(n-1)
f(3)相當(dāng)于重新調(diào)用了函數(shù),形參為3
5 * 4* 3* f(n-1)
f(2)相當(dāng)于重新調(diào)用了函數(shù),形參為2
5 * 4* 3 * 2* f(n-1)
f(1)相當(dāng)于重新調(diào)用了函數(shù),形參為1
很容易發(fā)現(xiàn),這時(shí)候如果遞歸調(diào)用到n為1的時(shí)候,就要結(jié)束調(diào)用自身
代碼如下:

int diGuiTest(int n ){
if(n==1){
return 1;
}
else{
return n*f(n-1);
}
}

代碼示例

求1–100之間所有自然數(shù)的和

int sum (int n ){
if(n==1){
return 1 ;
}
else{
return n+sum(n-1);
}
}

斐波拉契數(shù)列
斐波那契數(shù)列(Fibonacci sequence),又稱(chēng)黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱(chēng)為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:0、1、1、2、3、5、8、13、21、34、……在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:F(0)=0,F(xiàn)(1)=1, F(n)=F(n - 1)+F(n - 2) (n ≥ 2,n ∈ N*)

int fibonacci(int n ){

if (n<=1){
return n;
}
else {
return fibonacci(n-1)+fibonacci(n-2);
}

}

漢諾塔問(wèn)題

在這里插入圖片描述

首先我們考慮最簡(jiǎn)單的情況:

在這里插入圖片描述

將最上面的一塊放到B,再將最下面一塊放到C,再把最上面一塊從B放到C即可

在這里插入圖片描述

public class Hanio {
  public static void main(String[] args) {
    char A='A';
    char B='B';
    char C='C';
    hannio(3,A,B,C);
  }
  static  void hannio(int paltfrom,char A,char B, char C){
    if (paltfrom==1){
      move (A,C);
    }else {
      hannio(paltfrom-1,A,C,B);//上面兩個(gè)盤(pán)子,通過(guò)C柱到B柱
      move (A,C);
      hannio(paltfrom-1,B,A,C);//
    }
  }
  static  void move(char A,char B){
    System.out.println(A+"---->"+B);
  }
}

到此這篇關(guān)于什么是遞歸?用Java寫(xiě)一個(gè)簡(jiǎn)單的遞歸程序的文章就介紹到這了,更多相關(guān)Java 遞歸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JSON 格式的弊端與解決方法(真實(shí)示例)

    JSON 格式的弊端與解決方法(真實(shí)示例)

    JSON 格式是目前最流行的數(shù)據(jù)交互格式,廣泛應(yīng)用于前后端分離的系統(tǒng)。但也有一些場(chǎng)合不適合使用 JSON 格式,這篇文章主要介紹了JSON 格式的弊端與解決方法,需要的朋友可以參考下
    2022-09-09
  • Java并發(fā)編程之CountDownLatch原理詳解

    Java并發(fā)編程之CountDownLatch原理詳解

    這篇文章主要介紹了Java并發(fā)編程之CountDownLatch原理詳解,CountDownLatch類(lèi)中使用了一個(gè)繼承自AQS的共享鎖Sync對(duì)象,構(gòu)造CountDownLatch對(duì)象時(shí)會(huì)將傳入的線程數(shù)值設(shè)為AQS的state值,需要的朋友可以參考下
    2023-12-12
  • SpringMvc @Valid如何拋出攔截異常

    SpringMvc @Valid如何拋出攔截異常

    這篇文章主要介紹了SpringMvc @Valid如何拋出攔截異常,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Springboot打印接口的三種方式分享

    Springboot打印接口的三種方式分享

    這篇文章主要為大家詳細(xì)介紹了Springboot打印接口的三種方式:aop切面的方式、過(guò)濾器的方式和攔截器的方式,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • 一文帶你掌握J(rèn)ava中的HashSet

    一文帶你掌握J(rèn)ava中的HashSet

    HashSet?基于?HashMap?來(lái)實(shí)現(xiàn)的,是一個(gè)不允許有重復(fù)元素的集合,HashSet?不是線程安全的,?如果多個(gè)線程嘗試同時(shí)修改?HashSet,則最終結(jié)果是不確定的,本文將帶你詳細(xì)了解Java中的HashSet,,需要的朋友可以參考下
    2023-05-05
  • Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例

    Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例

    本文主要介紹了Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot整合Netty的流程步驟

    SpringBoot整合Netty的流程步驟

    Netty是一個(gè)基于Java的開(kāi)源網(wǎng)絡(luò)應(yīng)用框架,它提供了高性能、異步事件驅(qū)動(dòng)的網(wǎng)絡(luò)編程能力,Netty旨在幫助開(kāi)發(fā)者構(gòu)建高性能、高可靠性的網(wǎng)絡(luò)應(yīng)用程序,本文給大家詳細(xì)介紹了SpringBoot整合Netty的流程步驟,需要的朋友可以參考下
    2023-09-09
  • Mybatis攔截器的實(shí)現(xiàn)介紹

    Mybatis攔截器的實(shí)現(xiàn)介紹

    MyBatis提供了一種插件(plugin)的功能,雖然叫做插件,但其實(shí)這是攔截器功能。MyBatis 允許你在已映射語(yǔ)句執(zhí)行過(guò)程中的某一點(diǎn)進(jìn)行攔截調(diào)用。下面通過(guò)本文給大家介紹Mybatis攔截器知識(shí),感興趣的朋友一起看看吧
    2016-10-10
  • Java實(shí)現(xiàn)Dijkstra輸出最短路徑的實(shí)例

    Java實(shí)現(xiàn)Dijkstra輸出最短路徑的實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)Dijkstra輸出最短路徑的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java實(shí)現(xiàn)字符串倒序輸出的四種方法匯總

    Java實(shí)現(xiàn)字符串倒序輸出的四種方法匯總

    這篇文章主要介紹了Java實(shí)現(xiàn)字符串倒序輸出的四種方法匯總,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論