<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 閱讀(776) 評論(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))





    主站蜘蛛池模板: 中国xxxxx高清免费看视频| 免费黄网站在线看| 思思99re66在线精品免费观看| 亚洲av无码专区在线播放| 曰批全过程免费视频在线观看无码| 久久精品国产精品亚洲下载| 日本永久免费a∨在线视频| 亚洲av午夜精品一区二区三区| 羞羞漫画在线成人漫画阅读免费| 免费成人av电影| g0g0人体全免费高清大胆视频| 日本亚洲国产一区二区三区| 中文字幕a∨在线乱码免费看 | 男人j进入女人j内部免费网站 | 亚洲精品97久久中文字幕无码| 在线播放国产不卡免费视频| 亚洲人成人网站色www| 9420免费高清在线视频| 亚洲人成色777777老人头| 国产精品免费综合一区视频| jizz免费一区二区三区| 日本久久久久亚洲中字幕| 亚洲人成网站免费播放| 曰批全过程免费视频观看免费软件| 久久影视国产亚洲| 亚洲黄色片免费看| 婷婷国产偷v国产偷v亚洲| 亚洲精品狼友在线播放| 1024免费福利永久观看网站| 久久精品亚洲日本波多野结衣| 美腿丝袜亚洲综合| 永久看日本大片免费35分钟| 亚洲风情亚Aⅴ在线发布| 亚洲日韩精品一区二区三区无码 | 一道本不卡免费视频| 亚洲日韩精品无码专区加勒比☆ | 99re在线这里只有精品免费| 日韩亚洲产在线观看| 在线亚洲午夜理论AV大片| 免费无码AV片在线观看软件| 亚洲国产免费综合|