<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))





    主站蜘蛛池模板: 国产又黄又爽又猛的免费视频播放 | 久久亚洲色一区二区三区| 国产激情免费视频在线观看| 亚洲一线产品二线产品| 精品亚洲综合久久中文字幕| 我想看一级毛片免费的| 国产精品视频白浆免费视频| 一级毛片免费视频网站| 亚洲七久久之综合七久久| 亚洲特级aaaaaa毛片| 亚洲AV综合色区无码一区| 亚洲精品麻豆av| va亚洲va日韩不卡在线观看| 日本最新免费不卡二区在线| 久草在视频免费福利| 中文字幕成人免费视频| 一区二区三区四区免费视频| 国产免费人成视频尤勿视频 | 国产男女猛烈无遮挡免费网站| 在线永久免费的视频草莓| 亚洲视频在线观看免费视频| 日本高清高色视频免费 | 亚洲精品色午夜无码专区日韩| 亚洲综合色区在线观看| 亚洲精品午夜无码电影网| 国产午夜亚洲精品国产成人小说| 久久久久亚洲AV成人网人人软件| 免费一级一片一毛片| 亚洲宅男天堂在线观看无病毒| 亚洲AV无码一区东京热久久| 亚洲中文无码线在线观看| 亚洲性无码一区二区三区| 黄页网址在线免费观看| 182tv免费视频在线观看| 97碰公开在线观看免费视频| 午夜电影免费观看| 伊人久久亚洲综合| 亚洲一区二区三区亚瑟| 人成免费在线视频| 中文字幕人成无码免费视频| 国产精品亚洲视频|