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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理
        這個小節(jié)主要講解了迭代與樹形遞歸,遞歸比起迭代更易于理解和直觀,而迭代相比于遞歸則效率更高,一般計(jì)算機(jī)的遞歸實(shí)現(xiàn)都是使用堆棧結(jié)構(gòu)實(shí)現(xiàn)的,當(dāng)遞歸層次太深的時候容易導(dǎo)致棧溢出,而迭代則沒有這樣的問題。
    習(xí)題1.11是這樣的:
        如果n<3,那么f(n)=n;如果n>=3,那么f(n)=f(n-1)+2f(n-2)+3f(n-3),請寫一個采用遞歸計(jì)算過程f的過程,再改寫一個采用迭代計(jì)算過程計(jì)算f的過程。

    解答:
    1.采用遞歸的話就很簡單了,可以將條件直接描述為一個lisp過程,沒什么好解釋的:
    (define (f n)
            (
    if (< n 3)
                n
                (
    + (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3))))))
    2。迭代就相對麻煩點(diǎn),將遞歸轉(zhuǎn)化為迭代,關(guān)鍵在于找出迭代每一步之間的差異,這個差異就是每次迭代變化的量,找出這個固定編號的量就是問題的關(guān)鍵。很容易就可以看出f(n)和f(n-1)之間的差距就是:2f(n-2)+3f(n-3)。這就提示我們需要保持3個順序的狀態(tài)變量:f(n-2)、 f(n-1) 、f(n),迭代向前一步的時候:f(n-2)被f(n-1)取代,f(n-1)被f(n)取代,將f(n)+2f(n-2)+3f(n-3)做為新的f(n)。迭代是自底向上,初始化的3個變量就是0、1、2,這樣就可以相應(yīng)地寫出一個迭代版本的解答:
    (define (f-iter a b c n)
              (
    if (= n 2)
                  c
                  (f
    -iter b c (+ c (* 2 b) (* 3 a)) (- n 1))))
    (define (f
    -i n) (f-iter 0 1 2 n))

    可以測試一下,在n數(shù)目比較大的時候,遞歸版本速度明顯變慢甚至棧溢出,而迭代版本就比較快了。

    習(xí)題1.12:用遞歸過程描述帕斯卡三角(或者說楊輝三角)
    根據(jù)楊輝三角的特點(diǎn),x行y列的數(shù)字等于x-1行y列的數(shù)字和x-1行y-1列的數(shù)字之和,就可以解決這個問題:
    (define (pascal x y)
            (cond ((
    > y x) (display "error"))
                  ((
    = x 11)
                  ((
    = x 21)
                  ((
    = y 11)
                  ((
    = x y) 1)
                  (
    else 
                  (
    + (pascal (- x 1) y) (pascal (- x 1) (- y 1))))))



    評論

    # re: sicp 1.11 1.12習(xí)題解答  回復(fù)  更多評論   

    2015-03-23 23:54 by cuipengfei
    (f-i 1)
    會無法終結(jié)

    # re: sicp 1.11 1.12習(xí)題解答  回復(fù)  更多評論   

    2015-03-30 11:57 by fuck me
    在n數(shù)目比較大的時候,遞歸版本速度明顯變慢甚至棧溢出,而迭代版本就比較快了。

    這句話有問題,遞歸的深度只與n有關(guān),遞歸版本并沒有比迭代版本占用更多內(nèi)存資源
    主站蜘蛛池模板: 亚洲乱码中文字幕小综合| 国产精品V亚洲精品V日韩精品 | 日本亚洲精品色婷婷在线影院| a级毛片高清免费视频| 久久亚洲国产欧洲精品一| 国产无遮挡色视频免费观看性色| 亚洲精品网站在线观看不卡无广告| 国产亚洲成在线播放va| 亚洲国产综合人成综合网站| 一个人看的免费高清视频日本| 国产aⅴ无码专区亚洲av麻豆| a级午夜毛片免费一区二区| 亚洲AV无码一区二区三区DV| 95老司机免费福利| 亚洲av乱码一区二区三区香蕉| 男人的好看免费观看在线视频| 色费女人18女人毛片免费视频| 亚洲精品国自产拍在线观看| 成全视频免费观看在线看| 亚洲大尺码专区影院| 日韩免费电影在线观看| 中文字幕在线观看免费| 日产亚洲一区二区三区| 最近的中文字幕大全免费版| 风间由美在线亚洲一区| 国产亚洲精aa成人网站| 久久九九兔免费精品6| 亚洲精华液一二三产区| 久久亚洲2019中文字幕| 日韩午夜理论免费TV影院| 亚洲欧美日韩中文高清www777 | 小小影视日本动漫观看免费| eeuss在线兵区免费观看| 666精品国产精品亚洲| 日韩视频在线免费| 久久久久久AV无码免费网站下载| 欧洲 亚洲 国产图片综合| 亚洲精品乱码久久久久久蜜桃不卡| 免费看黄视频网站| 国产精品福利片免费看| 亚洲精品国产国语|