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

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

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

    莊周夢蝶

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

    sicp習題 1.17 1.18解答

    Posted on 2007-05-11 10:04 dennis 閱讀(782) 評論(0)  編輯  收藏 所屬分類: 計算機科學與基礎
        這兩道題目沒什么難度了,冪運算是連續乘,乘法運算就是連續加,改造一下書中的例子和習題1.16就可以了,還是分析一下。

    習題1.17:
    已知兩個過程,double過程可以求出一個整數的兩倍,而halve過程將一個偶數除以2;要求寫出一個過程,只用對數個步驟計算兩個整數的乘積。

    解答:
    計算a*b,考慮兩種情況:
    1)當b是偶數時:
    a*b=2(a*(b/2))
    2)當b是奇數時:
    a*b=a*(b-1)+a

    通過遞歸直接得到lisp過程,很好理解了,預先定義了兩個已知過程double和halve:
    (define (double x) (* x 2))
    (define (halve x) (
    / x 2))
    (define (multiplied a b)
      (cond ((or (
    = b 0) (= a 0)) 0)  
          ((even
    ? b) (double (multiplied a (halve b)))) 
          (
    else (+ a (multiplied a (- b 1))))))

    習題1.18:將1.17的遞歸過程改寫為迭代過程,保持對數個步驟

    分析:遞歸轉化為迭代,關鍵是要抓住狀態遷移間的不變量,我們給它一個狀態變量c,問題歸結為如何保持c+a*b不變。
    1)當b是偶數:
    c+a*b=c+(2a)*(b/2))
    在此過程中的狀態變換:
       c <--- c
       a 
    <--- 2a
       b 
    <--- b/2

    2)當b是奇數:
    c+a*b=(c+a)+a*(b-1)
    回溯此狀態轉換:
      c <--- (a+c)
      a 
    <--- a
      b 
    <--- (b-1)

    由此可以得到該過程的迭代版本,兩個已知過程與上同:
    (define (fast-multiplied-iter a b c)
      (cond ((
    = a 00)
            ((
    = b 0) c)
            ((even
    ? b) (fast-multiplied-iter (double a) (halve b) c))
            (
    else
               (fast
    -multiplied-iter a (- b 1) (+ a c)))))
     (define (fast
    -multiplied a b) (fast-multiplied-iter a b 0))





    主站蜘蛛池模板: 亚洲免费电影网站| 久久久久国色av免费看| 成人毛片18女人毛片免费96 | 亚洲a∨无码一区二区| www.黄色免费网站| 亚洲精品第一国产综合野| 中国人xxxxx69免费视频| 亚洲福利一区二区| 99久久综合国产精品免费| 亚洲av永久无码嘿嘿嘿| 性盈盈影院免费视频观看在线一区| 亚洲国产精品日韩在线| 国色精品卡一卡2卡3卡4卡免费| 亚洲欧洲日本精品| 免费一本色道久久一区| 亚洲AV成人无码网天堂| 夜色阁亚洲一区二区三区| 9久热精品免费观看视频| 亚洲AV无码专区国产乱码4SE| 久久久久高潮毛片免费全部播放| 久久亚洲精品成人无码网站| 成年人免费的视频| 亚洲AV无码国产一区二区三区 | 免费看片免费播放| 日韩在线视频免费| 亚洲Aⅴ无码专区在线观看q| 91黑丝国产线观看免费| 亚洲欧美成人一区二区三区| 亚洲国产婷婷香蕉久久久久久| 日本免费A级毛一片| 亚洲中文字幕久久精品无码2021| 四虎成人精品一区二区免费网站| 九九视频高清视频免费观看| 亚洲AV无码成人精品区天堂 | 亚洲综合av永久无码精品一区二区 | 亚洲精品久久无码| 亚洲色WWW成人永久网址| 日本免费网址大全在线观看 | 曰批全过程免费视频免费看| 亚洲VA中文字幕无码一二三区| 成年私人影院免费视频网站|