递归算法介绍及Java应用实战
轉(zhuǎn)載自?遞歸算法介紹及Java應(yīng)用實(shí)戰(zhàn)
什么是遞歸算法
遞歸算法是把問(wèn)題轉(zhuǎn)化為規(guī)模縮小了的同類問(wèn)題的子問(wèn)題,然后遞歸調(diào)用函數(shù)(或過(guò)程)來(lái)表示問(wèn)題的解。一個(gè)過(guò)程(或函數(shù))直接或間接調(diào)用自己本身,這種過(guò)程(或函數(shù))叫遞歸過(guò)程(或函數(shù))。
遞歸過(guò)程一般通過(guò)函數(shù)或子過(guò)程來(lái)實(shí)現(xiàn)。遞歸方法:在函數(shù)或子過(guò)程的內(nèi)部,直接或者間接地調(diào)用自己的算法。遞歸其實(shí)就是在棧內(nèi)存中不斷的加載同一個(gè)函數(shù)
什么時(shí)候用遞歸呢?
當(dāng)一個(gè)功能被重復(fù)使用,而每一次使用該功能時(shí)的參數(shù)不確定,都由上次的功能元素結(jié)果來(lái)確定。
遞歸的注意事項(xiàng)
必須有可最終達(dá)到的終止條件,否則程序?qū)⑾萑霟o(wú)窮循環(huán)出現(xiàn)棧內(nèi)存溢出錯(cuò)誤(StackOverflowError);
子問(wèn)題在規(guī)模上比原問(wèn)題小,或更接近終止條件;
子問(wèn)題可通過(guò)再次遞歸調(diào)用求解或因滿足終止條件而直接求解;
子問(wèn)題的解應(yīng)能組合為整個(gè)問(wèn)題的解。
遞歸實(shí)戰(zhàn)
下面用遞歸來(lái)實(shí)現(xiàn)從1+2+3+...N的小例子。
public static void main(String[] args) {System.out.println(sum(10)); }private static int sum(int n) {if (n == 1) {return n;} else {return n + sum(n - 1);} }上面的例子采用遞歸算法從1加到10,看著是倒著來(lái)的從10加到1,每次減1進(jìn)行相加真到最后為1終止。
?
總結(jié)
以上是生活随笔為你收集整理的递归算法介绍及Java应用实战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 石花膏的做法 怎么做石花膏
- 下一篇: Java父类强制转换子类原则