真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中遞歸和迭代有什么區(qū)別-創(chuàng)新互聯(lián)

1.概念

遞歸:無(wú)限調(diào)用自身這個(gè)函數(shù),每次調(diào)用總會(huì)改動(dòng)一個(gè)關(guān)鍵變量,直到這個(gè)關(guān)鍵變量達(dá)到邊界的時(shí)候,不再調(diào)用。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作與策劃設(shè)計(jì),元謀網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:元謀等地區(qū)。元謀做網(wǎng)站價(jià)格咨詢:18980820575

個(gè)人理解就是自己調(diào)用自己,直到滿足一個(gè)條件結(jié)束自己調(diào)用自己的過(guò)程,這個(gè)就是遞歸。舉一個(gè)通俗的點(diǎn)的例子:

假設(shè)你在一個(gè)電影院,你想知道自己坐在哪一排,但是前面人很多,你懶得去數(shù)了,于是你問(wèn)前一排的人「你坐在哪一排?」,這樣前面的人 (代號(hào) A) 回答你以后,你就知道自己在哪一排了——只要把 A 的答案加一,就是自己所在的排了,不料 A 比你還懶,他也不想數(shù),于是他也問(wèn)他前面的人 B「你坐在哪一排?」,這樣 A 可以用和你一模一樣的步驟知道自己所在的排。然后 B 也如法炮制,直到他們這一串人問(wèn)到了最前面的一排(或者說(shuō)問(wèn)到了知道自己是哪一排的人,預(yù)示著調(diào)用結(jié)束),第一排的人告訴問(wèn)問(wèn)題的人「我在第一排」,最后大家就都知道自己在哪一排了

迭代:是重復(fù)反饋過(guò)程的活動(dòng),其目的通常是為了逼近所需目標(biāo)或結(jié)果。

每一次對(duì)過(guò)程的重復(fù)稱為一次“迭代”,而每一次迭代得到的結(jié)果會(huì)作為下一次迭代的初始值。在Java中,我們使用接口機(jī)制來(lái)指定一個(gè)類所必須實(shí)現(xiàn)的方法。對(duì)于可迭代的集合數(shù)據(jù)類型,Java以及為我們定義了所需的接口。

2.遞歸

2.1構(gòu)成遞歸需具備的條件:


  1. 子問(wèn)題須與原始問(wèn)題為同樣的事,且更為簡(jiǎn)單;

2. 不能無(wú)限制地調(diào)用本身,須有個(gè)出口,化簡(jiǎn)為非遞歸狀況處理。

2.2遞歸的基本原理

第一:每一級(jí)的函數(shù)調(diào)用都有自己的變量。

第二:每一次函數(shù)調(diào)用都會(huì)有一次返回。

第三:遞歸函數(shù)中,位于遞歸調(diào)用前的語(yǔ)句和各級(jí)被調(diào)用函數(shù)具有相同的執(zhí)行順序。

第四:遞歸函數(shù)中,位于遞歸調(diào)用后的語(yǔ)句的執(zhí)行順序和各個(gè)被調(diào)用函數(shù)的順序相反。

第五:雖然每一級(jí)遞歸都有自己的變量,但是函數(shù)代碼并不會(huì)得到復(fù)制。

2.3遞歸優(yōu)缺點(diǎn)

java中遞歸和迭代有什么區(qū)別

2.4編寫一個(gè)遞歸函數(shù)

  • 這個(gè)遞歸函數(shù)的功能是什么,怎樣調(diào)用這個(gè)函數(shù),即設(shè)計(jì)好遞歸函數(shù)的返回值和參數(shù)列表

  • 什么時(shí)候應(yīng)該結(jié)束這個(gè)遞歸,它的邊界條件(出口)是什么(邊界條件)

  • 在非邊界情況時(shí),怎樣從第n層轉(zhuǎn)變成第n+1層(遞推公式)
例:
int f(int n) {
  //出口
   if (n > 0) {
     return n + f(n - 1);
   } else {
     return 0;
   }
}
解析:

java中遞歸和迭代有什么區(qū)別

 具體步驟:

java中遞歸和迭代有什么區(qū)別

遞歸遞歸,有遞就得有歸(出口),只遞不歸會(huì)導(dǎo)致程序崩潰。

要得到n - 1的積直接調(diào)用 f(x) 這個(gè)函數(shù)就行了,完全不需要思考這個(gè)函數(shù)怎么執(zhí)行的。

3.例題:走樓梯

3.1題目描述:

一個(gè)臺(tái)階總共有n級(jí),如果一次可以跳1級(jí),也可以跳2級(jí)。求總共有多少總跳法。I第一行輸入T,表示有多少個(gè)測(cè)試數(shù)據(jù)。接下來(lái)T行,每行輸入一個(gè)數(shù)n,表示臺(tái)階的階數(shù)。
輸出時(shí)每一行對(duì)應(yīng)一個(gè)輸出。

假如一共有三級(jí)臺(tái)階,一共有多少種走法?

java中遞歸和迭代有什么區(qū)別

假設(shè)有n級(jí)臺(tái)階,一共有多少種走法?

java中遞歸和迭代有什么區(qū)別

當(dāng)n > 2 時(shí),如果走1級(jí)有多少種走法 + 如果走2級(jí)有多少種走法,就是n級(jí)臺(tái)階所有的走法。

4.求n!遞歸法

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

5.求n!迭代法

int fun(int n) {
   int x = 1;
   for (int i = 2; i <= n; i++) {
     x *= i;
   }
   return x;
}

6.迭代

迭代與普通循環(huán)的區(qū)別是:迭代時(shí),循環(huán)代碼中參與運(yùn)算的變量同時(shí)是保存結(jié)果的變量,當(dāng)前保存的結(jié)果作為下一次循環(huán)計(jì)算的初始值。

遞歸與普通循環(huán)的區(qū)別是:循環(huán)是有去無(wú)回,而遞歸則是有去有回(因?yàn)榇嬖诮K止條件)。

在循環(huán)的次數(shù)較大的時(shí)候,迭代的效率明顯高于遞歸。

6.1現(xiàn)實(shí)中的迭代

迭代的方式有所不同,假如有個(gè)產(chǎn)品要求6個(gè)月交貨,我在第一個(gè)月就會(huì)拿出一個(gè)產(chǎn)品來(lái),當(dāng)然,這個(gè)產(chǎn)品會(huì)很不完善,會(huì)有很多功能還沒有添加進(jìn)去,bug很多,還不穩(wěn)定,但客戶看了以后,會(huì)提出更詳細(xì)的修改意見,這樣,你就知道自己距離客戶的需求有多遠(yuǎn),我回家以后,再花一個(gè)月,在上個(gè)月所作的需求分析、框架設(shè)計(jì)、代碼、測(cè)試等等的基礎(chǔ)上,進(jìn)一步改進(jìn),又拿出一個(gè)更完善的產(chǎn)品來(lái),給客戶看,讓他們提意見。
就這樣,我的產(chǎn)品在功能上、質(zhì)量上都能夠逐漸逼近客戶的要求,不會(huì)出現(xiàn)我花了大量心血后,直到最后發(fā)布之時(shí)才發(fā)現(xiàn)根本不是客戶要的東西的情況。

6.2優(yōu)勢(shì)

這個(gè)過(guò)程也很像打游戲,你剛開始玩,一下子就輸了,但是隨著你玩的次數(shù)越來(lái)越多,你的技藝就越來(lái)越精湛,而這個(gè)結(jié)果,不是你在開始玩游戲的時(shí)候,規(guī)劃出來(lái)的,而是在你玩的過(guò)程中,通過(guò)不斷的輸不斷的輸,練出來(lái)的。

所以,你能達(dá)成的結(jié)果,都是在你做的過(guò)程中,不斷試錯(cuò),不斷調(diào)整,不斷精進(jìn),最后自然而然得到的一個(gè)結(jié)果。

所以,我們不能把迭代簡(jiǎn)單的理解為“升級(jí)”。

升級(jí),更多描述的是一個(gè)結(jié)果,是一種直接的,一次性的,達(dá)成的一個(gè)目標(biāo),是一種線性的進(jìn)程。

而迭代,是通過(guò)無(wú)數(shù)次,不斷的,重復(fù)的,接近一個(gè)目標(biāo),折返接近,再折返再接近,最終達(dá)到目標(biāo)。它不是一次性完成的,是通過(guò)不斷重復(fù)的,但每次重復(fù)又比之前更好一點(diǎn),這樣一種非線性的進(jìn)程。

現(xiàn)在我們把“迭代”的關(guān)鍵詞拆解一下:

1.重復(fù):

不斷的重復(fù)做,而不是一次性的完成。

2.改進(jìn)

在做的過(guò)程中不斷的改進(jìn)、調(diào)整、優(yōu)化。

3.認(rèn)知升級(jí)

迭代的過(guò)程就是不斷提高認(rèn)知的過(guò)程,升級(jí)只是這個(gè)過(guò)程的一個(gè)結(jié)果。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享名稱:java中遞歸和迭代有什么區(qū)別-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://weahome.cn/article/jgigi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部