目前性能最好的筆記本 遞歸與循環(huán)有什么區(qū)別?
遞歸在函數(shù)體中調(diào)用自己。如果不受控制,它將繼續(xù)調(diào)用自身,直到堆棧溢出。循環(huán)是區(qū)域內(nèi)一段代碼的重復(fù)執(zhí)行,如果不加以控制,就會(huì)形成死循環(huán)。所以無(wú)論是遞歸還是循環(huán),都必須設(shè)置一定的條件來(lái)結(jié)束遞歸或循環(huán)。在實(shí)
遞歸在函數(shù)體中調(diào)用自己。如果不受控制,它將繼續(xù)調(diào)用自身,直到堆棧溢出。循環(huán)是區(qū)域內(nèi)一段代碼的重復(fù)執(zhí)行,如果不加以控制,就會(huì)形成死循環(huán)。所以無(wú)論是遞歸還是循環(huán),都必須設(shè)置一定的條件來(lái)結(jié)束遞歸或循環(huán)。在實(shí)際問(wèn)題中,有一些問(wèn)題是遞歸的。用遞歸程序來(lái)解決這樣的問(wèn)題會(huì)感覺(jué)更自然,程序也會(huì)更簡(jiǎn)單。然而,遞歸經(jīng)常調(diào)用函數(shù),并且開銷(內(nèi)存、時(shí)間)很大。有些問(wèn)題不適合使用。循環(huán)不需要自己調(diào)用,甚至不能調(diào)用函數(shù),效率很高。但是,遞歸應(yīng)該改為非遞歸返回,你可能需要?jiǎng)幽X筋
對(duì)于已知和可預(yù)測(cè)的情況,使用循環(huán)而不是遞歸。例如,如果您使用循環(huán)而不使用任何路徑搜索算法,那么如果您無(wú)法走出您的生活,您將需要遞歸。例如,如果你做了一個(gè)加1到100的算法,你不需要使用循環(huán)而不是遞歸,你的大腦一定會(huì)被淹沒(méi)。好的和壞的算法沒(méi)有區(qū)別,只是取決于你在哪里使用它,以及你是否能合理地使用它
速度取決于要執(zhí)行的任務(wù),這與遞歸和循環(huán)無(wú)關(guān)。例如,遞歸可以用while實(shí)現(xiàn),循環(huán)也可以用遞歸實(shí)現(xiàn)。由于調(diào)用子函數(shù)需要額外的內(nèi)存開銷,在相同任務(wù)的情況下循環(huán)通常更快(基本上沒(méi)有區(qū)別)。
遞歸與循環(huán)有什么區(qū)別?
循環(huán)和遞歸哪個(gè)效率高?
遞歸與循環(huán)哪個(gè)執(zhí)行的速度更快?
在相同條件下,循環(huán)更好。遞歸涉及更多的內(nèi)存操作,如變量堆棧壓出,太多的遞歸可能導(dǎo)致內(nèi)存溢出。