黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java基礎(chǔ)學(xué)習(xí):java怎么遞歸函數(shù)

Java基礎(chǔ)學(xué)習(xí):java怎么遞歸函數(shù)

更新時(shí)間:2020-03-18 13:50:15 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2709次


  遞歸的思想


  以此類推是遞歸的基本思想。


  具體來(lái)講就是把規(guī)模大的問(wèn)題轉(zhuǎn)化為規(guī)模小的相似的子問(wèn)題來(lái)解決。在函數(shù)實(shí)現(xiàn)時(shí),因?yàn)榻鉀Q大問(wèn)題的方法和解決小問(wèn)題的方法往往是同一個(gè)方法,所以就產(chǎn)生了函數(shù)調(diào)用它自身的情況。另外這個(gè)解決問(wèn)題的函數(shù)必須有明顯的結(jié)束條件,這樣就不會(huì)產(chǎn)生無(wú)限遞歸的情況了。


  遞歸的兩個(gè)條件


  可以通過(guò)遞歸調(diào)用來(lái)縮小問(wèn)題規(guī)模,且新問(wèn)題與原問(wèn)題有著相同的形式。(自身調(diào)用)


  存在一種簡(jiǎn)單情境,可以使遞歸在簡(jiǎn)單情境下退出。(遞歸出口)


  遞歸三要素:


  一定有一種可以退出程序的情況;


  總是在嘗試將一個(gè)問(wèn)題化簡(jiǎn)到更小的規(guī)模


  父問(wèn)題與子問(wèn)題不能有重疊的部分


  遞歸:自已(方法)調(diào)用自已


  例子:用遞歸把目錄下所有的目錄及文件全部顯示出來(lái)

  publicclassB{

  publicstaticvoidmain(String[]args){

  Filefile=newFile("f:\\123");

  listAllFile(file);

  }

  publicstaticvoidlistAllFile(Filefile){

  File[]strs=file.listFiles();

  for(inti=0;i<strs.length;i++){

  //判斷strs[i]是不是目錄

  if(strs[i].isDirectory()){

  listAllFile(strs[i]);//遞歸調(diào)用自己

  System.out.println("目錄="+strs[i].getName());

  }else{

  System.out.println("文件名="+strs[i].getName());

  }

  }

  }

  }

  遞歸算法的一般形式:

  func(mode){

  if(endCondition){//遞歸出口

  end;

  }else{

  func(mode_small)//調(diào)用本身,遞歸

  }

  }

  例子


  求一個(gè)數(shù)的階乘是練習(xí)簡(jiǎn)單而典型的例子,階乘的遞推公式為:factorial(n)=n*factorial(n-1),其中n為非負(fù)整數(shù),且0!=1,1!=1


  我們根據(jù)遞推公式可以輕松的寫(xiě)出其遞歸函數(shù):

  publicstaticlongfactorial(intn)throwsException{

  if(n<0)

  thrownewException("參數(shù)不能為負(fù)!");

  elseif(n==1||n==0)

  return1;

  else

  returnn*factorial(n-1);

  }

  遞歸的過(guò)程


  在求解6的階乘時(shí),遞歸過(guò)程如下所示。


Java基礎(chǔ)學(xué)習(xí):java怎么遞歸函數(shù)

  我們會(huì)驚奇的發(fā)現(xiàn)這個(gè)過(guò)程和棧的工作原理一致對(duì),遞歸調(diào)用就是通過(guò)棧這種數(shù)據(jù)結(jié)構(gòu)完成的。整個(gè)過(guò)程實(shí)際上就是一個(gè)棧的入棧和出棧問(wèn)題。然而我們并不需要關(guān)心這個(gè)棧的實(shí)現(xiàn),這個(gè)過(guò)程是由系統(tǒng)來(lái)完成的。


  那么遞歸中的“遞”就是入棧,遞進(jìn);“歸”就是出棧,回歸。


  我們可以通過(guò)一個(gè)更簡(jiǎn)單的程序來(lái)模擬遞進(jìn)和回歸的過(guò)程:

  /*

  關(guān)于遞歸中遞進(jìn)和回歸的理解*/

  publicstaticvoidrecursion_display(intn){

  inttemp=n;//保證前后打印的值一樣

  System.out.println("遞進(jìn):"+temp);

  if(n>0){

  recursion_display(--n);

  }

  System.out.println("回歸:"+temp);

  }

  遞歸的例子


  斐波那契數(shù)列


  斐波那契數(shù)列的遞推公式:Fib(n)=Fib(n-1)+Fib(n-2),指的是如下所示的數(shù)列:


  1、1、2、3、5、8、13、21.....


  按照其遞推公式寫(xiě)出的遞歸函數(shù)如下:

  publicstaticintfib(intn)throwsException{

  if(n<0)

  thrownewException("參數(shù)不能為負(fù)!");

  elseif(n==0||n==1)

  returnn;

  else

  returnfib(n-1)+fib(n-2);

  }

  遞歸調(diào)用的過(guò)程像樹(shù)一樣,通過(guò)觀察會(huì)發(fā)現(xiàn)有很多重復(fù)的調(diào)用。


Java基礎(chǔ)學(xué)習(xí):java怎么遞歸函數(shù)


  歸并排序


  歸并排序也是遞歸的典型應(yīng)用,其思想:將序列分為若干有序序列(開(kāi)始為單個(gè)記錄),兩個(gè)相鄰有序的序列合并成一個(gè)有序的序列,以此類推,直到整個(gè)序列有序。

  //遞歸過(guò)程是:在遞進(jìn)的過(guò)程中拆分?jǐn)?shù)組,在回歸的過(guò)程合并數(shù)組

  publicstaticvoidmergeSort(int[]source,int[]temp,intfirst,intlast){

  if(first<last){

  intmid=(first+last)/2;

  mergeSort(source,temp,first,mid);//歸并排序前半個(gè)子序列

  mergeSort(source,temp,mid+1,last);//歸并排序后半個(gè)子序列

  merge(source,temp,first,mid,last);//在回歸過(guò)程中合并

  }elseif(first==last){//待排序列只有一個(gè),遞歸結(jié)束

  temp[first]=source[first];

  }

  同樣調(diào)用過(guò)程向樹(shù)一樣,但是它并沒(méi)有重復(fù)調(diào)用的問(wèn)題。在遞進(jìn)的過(guò)程中拆分?jǐn)?shù)組,在回歸的過(guò)程合并數(shù)組。通過(guò)遞歸來(lái)實(shí)現(xiàn)歸并排序,程序結(jié)構(gòu)和條理非常清晰。

Java基礎(chǔ)學(xué)習(xí):java怎么遞歸函數(shù)


    以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java基礎(chǔ)學(xué)習(xí):java怎么遞歸函數(shù)”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 成人精品人成网站 | www.成人网.com | 国产精品自产拍在线观看 | 天天爱天天做天天干 | 妞干网免费 | 天天射日| 天堂网在线网站成人午夜网站 | 插综合网| 欧美三页 | 免费人成网站7777视频 | 永久免费在线播放 | 久久青青成人亚洲精品 | 日本三级韩国三级三级a级按摩 | 国产成人v片视频在线观看 国产成人v视频在线观看 | 国产激情一区二区三区在线观看 | 日韩影视在线观看 | 黄色网在线免费观看 | www视频在线 | 亚洲人色大成年网站在线观看 | 成人欧美精品大91在线 | 日本黄色二级片 | 日本中文字幕一区二区 | 免费高清a级毛片在线播放 免费高清欧美一区二区视频 | 香港午夜三级a三级高清观看 | 美国黄色毛片一级 | 欧美一区日韩一区中文字幕页 | 色5月综合 | 成人欧美网站 | 日韩国产欧美视频 | 操美女免费 | 性激烈的欧美三级高清视频 | 国产一级久久久久久毛片 | 特级毛片视频在线 | 黄色免费看视频 | 黄色一毛片 | 亚洲国产第一区二区三区 | 色吧在线观看 | 久久99热成人精品国产 | 岛国在线播放v片免费 | 激情网婷婷| 久久国产成人 |