亚洲 制服 中文字幕-日韩美女性色视频网站-欧美日韩一卡二卡在线观看-免费看日韩又粗又爽的毛片-欧美日韩国产色-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à)吧
加勒比久久综合久伊人爱爱-特黄特色免费大片在线观看-国产成人精品亚洲男人-久久久久久久久综合网 | 麻豆国产传媒61国产av在线观看-欧美日韩在线播放一区二区-麻豆精品在线国产-美日韩区二区三区久久久 | 日韩风骚少妇一区二区-精品国产91av在线观看-日韩三级网站在线播放-欧美日韩一级aaa | 午夜激情网在线观看-黑人高清视频在线观看-国产精品成人自拍偷拍-国产一区二区三区四区五区六区 999久久九九精品-中文日韩免费码中文在线观看-色一区二区三区欧美-激情五月网婷婷 | 日韩中文字幕福利视频-国产又黄又粗又色又刺激视频-日韩插插插免费视频-久久久久999蜜桃 | 91精品国产乱码久漫画软件-日本巨乳人妻中文字幕在线-91精品久久人人人妻人人人-亚洲精品乱码久久久久久蜜桃不卡快播 | 精品一区二区视频一-国产人妖一区二区av-日韩变态深喉口爆图片-国产乱色乱子伦一区二区三区 | 国产成人91精品免费网站-久99久热爱视频精品免费37-亚洲国产精品成人久久蜜臀-麻豆精品免费观看完整版 | 久久久亚洲熟妇一区二区三区-久久视频在线观看一区-国产二区中文字幕在线观看-91精选一区二区三区 | 亚洲乱熟女一区二区三区在线视频-丰满人妻一区二区三区免费观-国产日韩av中文字幕制服诱惑-日韩美女在线视频观看 | 激情五月婷婷伊人久久综合-妇女人妻丰满少妇中文字幕-julia人妻av一区二区三区-欧美国产综合视频一区二区三区 | 精品九九九九九香蕉臀蜜桃-久久精品不卡人妻-欧美日韩亚洲成人av-久久日韩熟女中文字幕av | 久久久人妻日韩精品-天天日天天射天天操天天爽-欧美国产日韩精品77上位-人妻 日韩精品 视频 | 日本久久一区二区三区-欧美不卡一区二区视频在线观看-91精品国产高清久久久久-精品少妇一区二区三区粘 | 91狠狠综合久久久精品-伊人久久亚洲精品中文字幕-超碰在线免费官网-99国产成人综合久久精品欧美 中文字幕日韩欧美av-麻豆免费av在线观看-最近日韩一级高清视频在线-国产av天堂亚洲国产av麻豆 | 成人免费av一区二区三区-天天爽天天少妇高潮-好好的日视频com-69久久夜色精品国产69乱粉嫩 | 婷婷的五月天爱爱-久久99国产综合色-四季av一区二区三区国产-一区二区麻豆国产在线观看 | 狠狠操天天干夜夜爽-国产成 人 综合 亚洲影音-国产色av综合在线-污污污污黄18禁亚洲av网站 | 五月婷婷丁香中文字幕-国产又粗又爽高潮呻吟-国产一区二区成人av在线播放-久久久久免费看少妇喷水大片 | 久久久久久久综合综合狠狠爱-亚洲深夜视频在线播放-91插插插免费看片-少妇人妻综合久久中文字幕 欧美日韩男女视频在线观看-日韩黄色一级免费电影-国产麻豆精品在线-激情综合激情五月综合 | 91精品aa一区二区三区-九九99热精品国产内外-亚洲精品乱码久久久久久警察-精品久久久中文字幕人 麻豆激情av自拍-另类专区亚洲一区-欧美精品久久99久久久久-丰满熟女人妻一区二区三五十一路 | 久久人妻少妇嫩草av蜜桃-色婷婷国产精品综合网-久久久精品视频3-巨乳熟女少妇操色综合 | 青草青草2在线视频免费观看-欧洲一区二区三区在线视频-久热手机在线视频亚洲-精品人妻中文字幕在线观看 | 91嫩草视频在线看-麻豆丝袜美女在线播放-人妻少妇精品中文字幕av-高清国产一区二区三区 | 亚洲免费在线观看一区二区-国产午夜精品久久久久精品免费看-麻豆精品在线观看,-青青青高清国产原视频在线观看 | av中文字幕青青草-97精品超碰在线播放-中文字幕精品一二三-欧美熟妇激情hd | 欧美激情戏一区二区三区-国产91极品啪啪啪-婷婷三月天激情四射-久久综合色影视电影 | 欧美中文字幕自拍偷拍-九十九步都是爱最后一步是尊严-亚州精品一区二区三区视频-人妻系列中文字幕精品 | 日韩精品激情在线-少妇高潮一区二区三区21p-精品视频免费观看婷婷-欧美日韩久久精品久久精品久久 | 久久久久久久综合综合狠狠爱-亚洲深夜视频在线播放-91插插插免费看片-少妇人妻综合久久中文字幕 欧美日韩男女视频在线观看-日韩黄色一级免费电影-国产麻豆精品在线-激情综合激情五月综合 | 精品人妻中文字幕视频-亚洲成人av新网址-日本精品乱码久久久久-超碰97人人想人人澡 | 日韩精品在线视频网站-日韩精品欧美亚洲最大-超碰心免费在线97-国产精品高潮呻吟av久久 | 亚洲变态另类av一区二区三区四区-成人区人妻精品一区-97精品人妻一区二-欧美日韩国产一区片 | 日韩av手机免费播日韩-99999精品视频在线免费观看-精品区一区二区三区人妻so-亚洲在线日韩欧美 | 麻豆国产传媒61国产av在线观看-欧美日韩在线播放一区二区-麻豆精品在线国产-美日韩区二区三区久久久 | 亚洲伦理在线免费电影-av网址在线观看中文字幕-日韩高清一区二区三区视频-五月婷婷六月丁香的 | 大白屁股一区二区熟女少妇-国产又粗又长又爽免费-久久思思这里只有精品-av一区二区三区骚 | 丰满大屁股人妻一区二区三区-国产超碰一区在线观看-久久久精品免费视频-久久精品麻豆国产免费高清 | 国产传媒麻豆剧精品av国产-中文字幕 尤物视频-日韩,欧美一区二区三区免费-麻豆国产精品久久综合亚洲av | 91人妻精品久久久久久久久51-亚洲av日韩久久精品-日韩色图免费在线视频-久久一区二区中文字幕 | 久久久久精精精精品-日韩av一卡在线观看-日韩feex精品视频在线观看-国产综合开心激情五月 |