亚洲 制服 中文字幕-日韩美女性色视频网站-欧美日韩一卡二卡在线观看-免费看日韩又粗又爽的毛片-欧美日韩国产色-yellow中文字幕91在线-yellow字幕网国产资源-亚洲国产成人精品免费视频-久久亚洲av日韩一区二区三区,日韩av中文字幕小说,1区2区3区4区乱码,六月丁香久久婷婷久久

全美商學(xué)院
新聞
新聞

遞歸在成都小程序開發(fā)中是如何工作的

2019
02/15
17:14
全美網(wǎng)絡(luò)官網(wǎng)
分享

成都小程序開發(fā)開發(fā)人員經(jīng)常使用算法將問題分解為更容易解決的更小的塊。這種分而治之的方法使得為了解決每個(gè)問題,您可以多次調(diào)用同一個(gè)函數(shù)來(lái)處理每個(gè)部分。

小程序開發(fā)

在編程中,遞歸發(fā)生在方法調(diào)用自身時(shí),并在達(dá)到基本情況時(shí)終止?;厩闆r是一個(gè)條件語(yǔ)句,它執(zhí)行返回語(yǔ)句而不是再次調(diào)用相同的函數(shù),結(jié)束循環(huán)。遞歸的典型用途包括分而治之算法和解決連續(xù)出現(xiàn)的問題,例如計(jì)算斐波那契數(shù)列或階乘。

在這篇文章中,我們將討論成都小程序開發(fā)中的遞歸,以及如何編寫計(jì)算數(shù)字階乘的遞歸方法。您將了解如何在成都小程序開發(fā)中使用遞歸,何時(shí)比其他方法更好,以及實(shí)現(xiàn)遞歸函數(shù)時(shí)的最佳實(shí)踐。

在成都小程序開發(fā)中使用遞歸

Java 中用于遞歸的代碼相對(duì)簡(jiǎn)單,尤其是與迭代方法相比。遞歸可以幫助您編寫使用更少內(nèi)存的軟件,因?yàn)橐坏┖瘮?shù)返回,變量就會(huì)被刪除。遞歸函數(shù)是純函數(shù),這意味著它們的輸出僅取決于它們的輸入?yún)?shù)。

遞歸和階乘

了解成都小程序開發(fā)中遞歸的最簡(jiǎn)單方法之一是檢查打印數(shù)字階乘的函數(shù)。

您可以通過將一個(gè)數(shù)乘以所有小于它本身的正整數(shù)來(lái)計(jì)算階乘。在本節(jié)中,您將看到遞歸代碼與基于循環(huán)的代碼之間的比較。

例如,5 的階乘為 120,可以這樣表示:

階乘 (5) = 5 * (4 * (3 * (2 * 1)))

請(qǐng)注意這是如何形成一個(gè)級(jí)數(shù)的:5 的階乘等于 5 乘以 4 的階乘,4 乘以 3 的階乘,依此類推。遞歸的基本情況是 0。當(dāng)輸入?yún)?shù)達(dá)到 0 時(shí),您將從方法主體返回 1。

使用循環(huán)的階乘

以下函數(shù)計(jì)算作為參數(shù)傳遞的數(shù)字的階乘——一次使用 For 循環(huán),然后再次使用遞歸。在主入口點(diǎn)調(diào)用此方法并傳遞一個(gè)參數(shù)。您可以通過提供 5 作為輸入?yún)?shù)來(lái)對(duì)此進(jìn)行測(cè)試,程序返回 120。

您可以使用 For 和 While 循環(huán)在成都小程序開發(fā)中執(zhí)行階乘。

處理邊緣情況

在構(gòu)建遞歸函數(shù)時(shí),您可以添加邊緣情況來(lái)縮短遞歸。如果下一個(gè)遞歸調(diào)用將是基本情況,則進(jìn)行短路測(cè)試。您可以在數(shù)字等于或小于 0 時(shí)返回 2 并開始遞歸,而不是僅在數(shù)字等于或小于 0 時(shí)返回 1。

請(qǐng)記住,短路需要編寫一個(gè)包裝函數(shù)來(lái)對(duì)參數(shù)執(zhí)行條件檢查。這通常是不鼓勵(lì)的,因?yàn)榘b器的價(jià)值需要更高。

為了處理短路,向類中添加一個(gè)新的成員方法作為遞歸函數(shù)的包裝器。包裝函數(shù) factorial 調(diào)用內(nèi)部方法factorialRecursive開始遞歸。此代碼具有相同的輸出,但在執(zhí)行過程中又跳過了一步,因?yàn)楫?dāng)數(shù)字變?yōu)?2 時(shí)它會(huì)短路。

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

現(xiàn)在讓我們使用“遞歸和階乘”部分中的方法來(lái)研究決定遞歸和非遞歸方法的一些因素。

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

在成都小程序開發(fā)中,遞歸以多種方式提高性能,包括:

記憶化

Memoization 跳過已經(jīng)計(jì)算輸出并存儲(chǔ)在內(nèi)存中的遞歸情況。這可以防止重復(fù)計(jì)算,因?yàn)榇鎯?chǔ)了輸出并提高了軟件的性能。這種方法利用緩存來(lái)提高使用遞歸的性能。

查找階乘的代碼使用緩存變量來(lái)存儲(chǔ)以前使用的值。

此外,遞歸方法還僅依賴于輸入并包含業(yè)務(wù)邏輯,而沒有底層技術(shù)方面,例如堆棧管理。這允許工程師編寫具有更少內(nèi)存和更少副作用(方法范圍之外的狀態(tài)更改,例如系統(tǒng)參數(shù))的軟件。

此外,它對(duì)特定算法很有用,例如樹遍歷。深度優(yōu)先搜索算法使用堆棧來(lái)執(zhí)行搜索。因此,您可以將算法編寫為遞歸函數(shù),與迭代方法相比,這更容易編寫。例如,比較使用遞歸和迭代方法的前序遍歷代碼。

最后,一些表達(dá)式,尤其是在數(shù)學(xué)運(yùn)算中使用的表達(dá)式,具有特定的符號(hào)。這些操作的輸入最常見的表示法是前綴、中綴和后綴。固定是操作數(shù)在操作中的位置。這允許遞歸函數(shù)輕松復(fù)制操作而無(wú)需額外的包裝器。您可以使用上述表達(dá)式從數(shù)組構(gòu)建樹,反之亦然。這有助于在一維內(nèi)存結(jié)構(gòu)(例如 RAM)中表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如樹。

遞歸的缺點(diǎn)

遞歸也有其局限性。首先,遞歸函數(shù)反復(fù)調(diào)用自身,這會(huì)導(dǎo)致堆棧因參數(shù)溢出而導(dǎo)致程序過早終止。在成都小程序開發(fā)中,每個(gè)程序的堆棧空間都是有限的,而堆的限制則較少。因此,當(dāng)程序試圖使用大量堆??臻g時(shí),它會(huì)收到 StackOverflowException,此時(shí)程序會(huì)繼續(xù)壓入堆棧但不會(huì)彈出并達(dá)到限制。

另一方面,堆不是后進(jìn)后出操作 (LIFO),因此程序可以在系統(tǒng)允許的范圍內(nèi)向堆推送盡可能多的數(shù)據(jù)。

此外,當(dāng)遞歸函數(shù)執(zhí)行函數(shù)調(diào)用作為最后一個(gè)語(yǔ)句時(shí),Java 編譯器無(wú)法優(yōu)化使用尾遞歸的遞歸方法。相反,遞歸函數(shù)將函數(shù)調(diào)用作為頭遞歸中的第一條語(yǔ)句執(zhí)行。

“處理邊緣情況”部分中的代碼演示了沒有一個(gè)函數(shù)是尾遞歸。factorialRecursion 是非尾遞歸(不要與頭遞歸混淆),因?yàn)樗鳛楹瘮?shù)的結(jié)果運(yùn)行。

此方法使用一個(gè)變量來(lái)存儲(chǔ)所有數(shù)字的乘積。它運(yùn)行一個(gè)循環(huán),該循環(huán)從我設(shè)置為2的變量開始并返回產(chǎn)品。請(qǐng)注意,大于 2 的數(shù)字必須相乘,直到i等于數(shù)字參數(shù)本身。當(dāng)滿足循環(huán)條件時(shí),迭代停止。

迭代風(fēng)格使得定義迭代計(jì)數(shù)、內(nèi)存管理和計(jì)算停止的時(shí)間變得更加容易。這也允許更好地控制堆棧增長(zhǎng)。它有助于避免成都小程序開發(fā)程序中的 StackOverflowException。

同樣,迭代方法不需要包裝函數(shù)。因此,它們避免了任何不需要的額外堆棧輸入。這就是為什么通常不鼓勵(lì)通過縮短遞歸來(lái)獲得一次性性能改進(jìn)的原因。

然而,對(duì)于基于序列的問題,例如計(jì)算階乘或斐波那契數(shù)列,迭代方法通常更難編寫。遞歸通常會(huì)產(chǎn)生一種更優(yōu)雅的方法,它可以用更少的代碼行產(chǎn)生相同的結(jié)果。

遞歸最佳實(shí)踐

在遞歸函數(shù)中,處理所有可能的邊緣情況以從遞歸函數(shù)返回。如果您不處理邊緣情況,您的遞歸可能會(huì)永遠(yuǎn)運(yùn)行,導(dǎo)致您的程序由于 StackOverflowException 錯(cuò)誤而過早終止。遞歸中的短路并不總是最好的方法,因?yàn)槟ǔ1仨殗@遞歸函數(shù)編寫包裝函數(shù)。代替短路包裝函數(shù),對(duì)遞歸方法內(nèi)部的邊緣情況和函數(shù)可以接受的參數(shù)應(yīng)用條件檢查。

此外,請(qǐng)記住堆棧不會(huì)跟蹤已處理的參數(shù)。這會(huì)導(dǎo)致您的遞歸函數(shù)重復(fù)處理相同的參數(shù)。為避免這種重復(fù)并降低時(shí)間復(fù)雜度,您應(yīng)該始終在處理后使用記憶來(lái)存儲(chǔ)參數(shù)。

遞歸在成都小程序開發(fā)中是如何工作的

遞歸函數(shù)允許成都小程序開發(fā)程序中的代碼調(diào)用自身,通過對(duì)一系列輸入?yún)?shù)運(yùn)行相同的操作來(lái)計(jì)算輸出。所涵蓋的示例只是其實(shí)際應(yīng)用的一小部分。Java 軟件開發(fā)工具包 (SDK) 中的各種搜索和排序算法都使用遞歸,包括深度優(yōu)先搜索、歸并排序和樹遍歷。

這并不是說(shuō)遞歸是萬(wàn)能的方法,尤其是在內(nèi)存有限的情況下。在這種情況下,建議使用迭代方法來(lái)編寫函數(shù)。這使得解決方案更具可擴(kuò)展性并且不易發(fā)生內(nèi)存溢出。

然而,遞歸使成都小程序開發(fā)的軟件工程師能夠利用函數(shù)式編程的最佳實(shí)踐并將它們應(yīng)用于面向?qū)ο蟮木幊潭鴽]有副作用。這是一種更聰明的方法,而不是更難。

聯(lián)系我們
歡迎來(lái)到全美,免費(fèi)
獲取專業(yè)小程序設(shè)計(jì)方案
電話咨詢:

15281067168

您還可以預(yù)約資深顧問
隱私信息保護(hù)中,請(qǐng)放心填寫

在線客服

電話咨詢

微信咨詢

微信號(hào)復(fù)制成功
15281067168 (蘇女士)
打開微信,粘貼添加好友,免費(fèi)詢價(jià)吧
精品视频精品人妻一区二区三区-激情久久综合精品久久-精品一区二区三区免费观看视频-久久99精品国产麻豆婷婷观看体验 | 久久综合九色综合88i-国产三级韩国三级三级a级-国产又粗又硬又黄视频-精品一区二区三区高清观看 中文字幕不卡一区二区-精品女同一区二区三区免费播放-久久婷婷国产91天堂综合精品-不卡久久精品国产亚洲av不卡 | 人妻av中文字字幕第一-欧美日韩在线黄色-亚洲精品小视频在线-欧美日韩一区二区三区五区 | 日韩欧美在线一区二区三区四区-五月婷婷丁香花综合网-国产一区二区三区在线观看视频网站-久久色在线综合 | 欧美伊人精品成人久久综合97-精品久久久久久久久一区二区-中文字幕综合日韩人妻-天堂性视频99在线播放免费 | 视频在线观看不卡一区二区三区-91麻豆蜜桃一区二区三区-国产 精品 久久久-青青久久久成年综合视频 | 日韩一卡二卡在线视频免费观看-99久久99视频这里只有精品-久久男人久久天堂久久-国产视频一区二区免费在线播放 | julia在线视频中文字幕-五月婷激情四射综合-91成人区人妻精品一区二区三区-hitomi超乳田中瞳中文字幕 | 亚洲天堂中文字幕悠悠-久久夜久久久久-久久久久亚洲av毛片大全有-日韩欧美国产免费大片 | 日韩国产一级特黄aa大片-国产乱人妻精品入口′-精品乱码97久久久久久-久久久久精品国产99久久 | 欧美日韩三区二区一-一区二区 成人在线-日韩三级电影网一二区-色婷婷午夜免费专区精品视频 | 免费日韩熟女a-欧美熟妇极品狂交在线看片-久久久久av中文字幕-av在线 亚洲专区 | 欧洲一区二区视频在线观看-www婷婷综合-大香蕉 伊人 久久-日韩激情在线观看一区 | 久夜色精品国产噜噜亚洲av-久久精品国产亚洲av久按摩-青青久久av操-久久66热人妻偷产精品3d动漫 国产又黄又大又猛的视频-美女国产在线观看视频-国产一区二区三区熟女-久久九九亚洲视频 | 国产精品国产三级国产在线专50-51精产国品久久一二三a区蜜桃-欧美日韩深喉视频在线-日韩av手机在线不卡 | 国产精品亚洲精品日韩已满十八小-丰满人妻一区二区三区免费看-91日韩中文字幕在线视频-年轻的母亲中文字幕在线看 | 97久久碰人妻一区二区网-亚洲熟妇av在线观看-99久久亚洲综合精品-日韩精品人妻丝袜中文字幕 | 18禁国产精品久久久久久久久-亚洲制服丝袜人妻中文字幕-美日韩视频在线看-日韩午夜精选在线 | 亚洲欧洲一区二区三区中文字幕-一区二区三区蜜桃臀-91国偷自产一区二区三区三区-久久久久久熟妇热舞 | 国产欧美一二三区在线粉嫩-久久久久久久亚洲精品张柏芝换脸-99精品国产综合久久麻豆-国产乱子伦一区二区avxxx | 日韩av在线播放一区二区-亚洲亚洲成人三级电影-蜜臀精品一区二区三区在线观看-日韩三级四级片在线观看视频 | 99人妻人人澡人人爽人人精品-人人妻人人爽人人澡av毛片-91亚洲成人一区二区三区-91porny九色91肥臀 | 99精品久久久久久国产av-亚洲特老女人av毛片-日韩欧美一区二区最新-日韩有码 在线视频 | 日韩精品激情在线-少妇高潮一区二区三区21p-精品视频免费观看婷婷-欧美日韩久久精品久久精品久久 | 在线观看国产成人99-成年女人毛片免费观看不卡-亚洲人妻一区中出-日韩人妻精品免费视频 | 国产人妻熟女一区二区三区四区-蜜臀久久99精品久久一区二区-久久国产麻豆精品-日本中文字幕系列网站 | 91精品麻豆91夜夜骚-丰满人妻久久久久久久-国产精品久久久呀-国产伦精区二区三区视频 | 国产乱码一区二区三区四区-国产 日韩午夜-99久久人妻精品系列-亚洲深喉口爆吞精视频 | 国产麻豆精品传媒av国产下载-中文字幕av在线现在-亚洲欧美日韩综合体-亚洲av高清一区二区三区 | 日韩无日韩精品视频-国产精品久久久久久中文字幕-精品推荐久久久久国产av-日韩日b视频在线观看 | 九九热久久久99国产盗摄蜜臀-91精品一区二区一-超碰人妻福利社-日本久久久夜夜 | 99麻豆久久久精品国产-国内精品久久久久伊人av-91精品国产综合久久久蜜臀粉嫩-中文字幕高清免费在线人妻 | 久久久久久五月婷婷丁香-欧洲精品二区三区-人人妻人人澡人人爽人人a v-日韩欧美国产一区二区三区在线观看 | 欧美黑人巨大xxx极品-日本特黄久久久高潮-久热国产在线视频精品-国产日韩成人在线视频 | 午夜久久精品国产亚洲av-日韩亚洲高清中文字幕-少妇激情一区二区三区免-91大神国产小青蛙 | 国内精品伊人久久久av高清影-91久久国产精品小视频-内射中文字幕精品电影-熟女人妻中文字幕久久久边 | 日韩人妻熟女中文字幕aⅴ网站-国产极品美女扒开粉嫩小91-av中文字幕在线国产-国产精品成人av久久999d3 | 操日韩av在线电影-日韩免费熟女二三区-91大神夯先生在线播放-91久久澡人人爽人人添 | 99精品这里只有精品-国产视频一区二区在线看-国产一区二区三区久久毛片国语-嫩草婷婷久久嫩草 | 中文字幕日韩一二区-精品人妻一区二区区-欧美 日韩 亚洲 在线-久久六热免费观看 | 隔壁的女孩在线播放中文字幕-久久久久精品一区二区三区-国产精品久久久久久久久久久痴汉-西门庆91蜜桃臀女神在线 |