<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    數據結構之遞歸

    Posted on 2007-02-20 12:56 dennis 閱讀(1272) 評論(0)  編輯  收藏 所屬分類: 數據結構與算法
    1。遞歸的定義:
    遞歸的定義由兩部分組成:
    1)稱作定位點(anchor)或者基本情況(ground case),它們是一些基本元素,這些基本元素是集合序列中其他所有對象的基礎。
    2)給出除基本元素或者已創建對象之外的新對象的構造規則,可以再三使用這個規則不斷產生新的對象。

    2。遞歸的實現:一般是由操作系統完成的,但是大部分的計算機系統的遞歸定義都是利用運行時堆棧實現的。在系統內,無論何時調用一個方法都會創建一個活動記錄。一個遞歸調用并不僅僅是一個方法調用其自身,而是方法的一個instance調用相同方法的另一個instance,在計算機內部,這些調用是用不同的活動記錄表示,并由系統區分。

    3。尾遞歸:
    僅在方法的末尾實行一次遞歸調用,這樣的遞歸叫尾遞歸。尾遞歸很容易被循環所替換,或者說它只是一個名字比較好聽的循環,如:
    void?tail(int?i){
    ??
    if(i>0){
    ????System.out.print(i
    +"?");
    ????tail(i
    -1);
    ??}

    }

    替換為循環:
    void?tail2(int?i){
    ???
    for(;i>0;i--)
    ?????System.out.print(i
    +"?");
    }


    尾遞歸對一些沒有顯式循環結構的語言(如Prolog)特別重要

    4。非尾遞歸:
    遞歸相比于迭代結構的優點就是非常清晰并易于理解,這一點可以在二叉樹遍歷上得到體現。3種遍歷方式的遞歸版本與迭代版本在可讀性上不可同日而語。
    問題:逆序輸出一行輸入(以ruby語言為例)

    def?reverse
    ??s
    =STDIN.getc
    ??
    if?s.chr!="/n"
    ????
    reverse
    ????
    print?s.chr
    ??end
    end?
    reverse?


    運行此程序,輸入一行字符,將逆序輸出,本質上是利用運行時堆棧完成的遞歸調用

    5。間接遞歸:
    方法通過一連串的調用,然后間接地調用它自身,這樣的遞歸稱為間接遞歸。
    6。嵌套遞歸
    一般出現在函數的定義中,如果這個函數不僅用它自身定義,而且還江它自身作為一個參數,如:
    ???? 0????? ???? ?n=0
    h(n)=n??? ???? n>4
    h(2+h(2n))?? n<=4

    7。過分遞歸:遞歸帶來的邏輯簡單性和可讀性的代價是拖長了運行時間并且相對于非遞歸方法,它占用了更多的運行時堆棧空間。如果遞歸層次太深,可能導致運行時堆棧溢出,程序非正常結束的錯誤。

    8?;厮荩╞acktracking技術):在某點有多條道路供選擇的時候,但不清楚哪一條能解決問題。在嘗試一條道路失敗后,返回岔口再試另一條道路。但是必須確定所有的道路都是可嘗試的,可返回的。這種技術成為回溯。
    在迷宮問題中和8皇后問題中使用此技術。具體程序不再列出(好長@_@)
    主站蜘蛛池模板: 啦啦啦手机完整免费高清观看 | 亚洲AV无码一区二区乱子伦| 色婷婷六月亚洲综合香蕉| 最新中文字幕免费视频| 国产成人亚洲综合网站不卡| 成年女人免费碰碰视频| 亚洲欧洲专线一区| 国产国产人免费人成免费视频| 亚洲av永久无码| 亚洲国产精品嫩草影院久久| 亚洲五月午夜免费在线视频| 国产亚洲人成网站在线观看不卡| 日本免费人成网ww555在线| 久久久亚洲欧洲日产国码二区| 免费看片在线观看| 亚洲精品国产suv一区88| 亚洲AV无码专区日韩| 两性色午夜免费视频| 久久久无码精品亚洲日韩蜜臀浪潮| 成年人免费的视频| 精品亚洲成a人在线观看| 国产亚洲欧洲Aⅴ综合一区 | 亚洲av综合色区| 国产在线a免费观看| 在线观看亚洲免费视频| 国产精品亚洲A∨天堂不卡| 亚洲视频在线免费看| 亚洲av无码专区国产不乱码| 亚洲无人区午夜福利码高清完整版 | 美美女高清毛片视频黄的一免费| 国产亚洲情侣一区二区无| 亚洲午夜免费视频| 亚洲A∨精品一区二区三区下载| 国产自偷亚洲精品页65页| 在线观看的免费网站无遮挡| 亚洲国产成人久久一区二区三区 | 日本亚洲免费无线码| 美女被免费视频网站| 亚洲国产美国国产综合一区二区 | 亚欧日韩毛片在线看免费网站| 亚洲精华液一二三产区|