遞歸和迭代有什么區(qū)別?
1、遞歸的基本概念:程序調(diào)用自身的編程技巧稱為遞歸,是函數(shù)自己調(diào)用自己.一個(gè)函數(shù)在其定義中直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型的復(fù)雜的問(wèn)題轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題來(lái)解決,可以極大的減少代碼量.遞歸的能力在于用有限的語(yǔ)句來(lái)定義對(duì)象的無(wú)限集合.使用遞歸要注意的有兩點(diǎn):
1)遞歸就是在過(guò)程或函數(shù)里面調(diào)用自身;2)在使用遞歸時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口.遞歸分為兩個(gè)階段:1)遞推:把復(fù)雜的問(wèn)題的求解推到比原問(wèn)題簡(jiǎn)單一些的問(wèn)題的求解;
2)回歸:當(dāng)獲得最簡(jiǎn)單的情況后,逐步返回,依次得到復(fù)雜的解.
2、迭代:利用變量的原值推算出變量的一個(gè)新值.如果遞歸是自己調(diào)用自己的話,迭代就是A不停的調(diào)用B.遞歸中一定有迭代,但是迭代中不一定有遞歸,大部分可以相互轉(zhuǎn)換.能用迭代的不用遞歸,遞歸調(diào)用函數(shù),浪費(fèi)空間,并且遞歸太深容易造成堆棧的溢出.