小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java入門到架構(gòu)師課程之Java中的遞歸結(jié)構(gòu),遞歸算法缺陷

 明輝館藏 2021-11-20

遞歸是一種常見的解決問題的方法,即把問題逐漸簡單化。 遞歸的基本思想就是 自己調(diào)用自己 ”,一個使用遞歸技術(shù)的方法將會直接或者間接的調(diào)用自己。利用遞歸可以用簡單的程序來解決一些復(fù)雜的問題。比如:大多數(shù)排序使用的就是遞歸算法。

一、遞歸結(jié)構(gòu)包括兩個部分

  1. 定義遞歸頭。解答:什么時候不調(diào)用自身方法。如果沒有頭,將陷入死循環(huán)。

  2. 遞歸體。解答:什么時候需要調(diào)用自身方法。

public static void print(int i) {
System.out.println(i);
if(i==10){ //遞歸頭    return; //提前結(jié)束方法}
print(++i); //遞歸}public static void main(String[] args) {
print(1);  //打印1~10之間的數(shù)據(jù)
}

  

這個圖片很好的詮釋了遞歸,需Java全套到Java架構(gòu)師課程請私信哦~

我們可以使用代碼實現(xiàn)打印嚇得我抱起了抱著抱著抱著我的小鯉魚的我的我的我

public static void recursion(int i) {
System.out.println("抱著");
if (i==0) { //臨界條件System.out.println("我的小鯉魚");
} else {
    recursion(--i);  // 遞歸調(diào)用}
System.out.println("的我");}public static void main(String[] args) {
System.out.println("嚇得我抱起了");
recursion(2);}

二、遞歸三要素

  • 一定有一種可以退出程序的情況;

  • 總是在嘗試將一個問題化簡到更小的規(guī)模

  • 父問題與子問題不能有重疊的部分

三、遞歸的缺陷

簡單的程序是遞歸的優(yōu)點之一。但是遞歸調(diào)用會占用大量的系統(tǒng)堆棧,內(nèi)存耗用多,在遞歸調(diào)用層次多時速度要比循環(huán)慢的多。所以再使用時要慎重。

注意:任何可用遞歸解決的問題也能使用迭代解決。但遞歸方法可以更加自然地反映問題,并且易于理解和調(diào)試,并且不強(qiáng)調(diào)效率問題時,可以采用遞歸;

在要求高性能的情況下盡量避免使用遞歸,遞歸調(diào)用既花時間又耗內(nèi)存。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多