莊周夢蝶

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

          sicp 1.15習題解答

          Posted on 2007-05-10 14:58 dennis 閱讀(747) 評論(0)  編輯  收藏 所屬分類: 計算機科學與基礎
              本小節主要介紹了階的概念,與算法中計算時間和空間復雜度類似。給了一個過程:
          (define (cube x)(* x x x))
          (define (p x) (
          - (* 3 x) (* 4 (cube x))))
          (define (sine angle)
                   (
          if (not (> (abs angle) 0.1))
                       angle
                       (p (sine (
          / angle 3.0)))))
              這個過程用于求弧度的正弦值
          a)在求值(sine 12.15)時,p過程將被使用多少次?
          答:
          (sine 12.15)->(p (sine 4.05))
                      ->(p (p (sine 1.35)))
                      ->(p (p (p (sine 0.45))))
                      ->(p (p (p (p (sine 0.15)))))
                      ->(p (p (p (p (p (sine 0.05))))))
          顯而易見,p被調用了5次

          b)由過程sine所產生的計算過程使用的空間和步數增長的階是多少?
          從上面的分析可以看出,空間和步數的增長都跟p的調用次數成正比,也就是與遞歸次數是線性關系。
          當|a|<0.1時,遞歸次數為0
          當|a|>0.1時,遞歸的最大次數滿足條件:|a|/3**num<0.1,這里的3**num采用ruby記法表示3的num次方,此時遞歸次數num<log3(10a)
          因此,對于空間和步數的階應該為:R(n)=(theta)lg(n)

          主站蜘蛛池模板: 徐汇区| 唐山市| 栖霞市| 大邑县| 黄陵县| 黑龙江省| 如东县| 峨眉山市| 深泽县| 日照市| 重庆市| 张家川| 洮南市| 克东县| 哈尔滨市| 宜昌市| 钦州市| 溆浦县| 红原县| 竹溪县| 海盐县| 普陀区| 沙湾县| 高阳县| 凉山| 景洪市| 新干县| 化德县| 莱阳市| 南华县| 泸溪县| 五大连池市| 金湖县| 双牌县| 杭锦后旗| 上饶县| 叙永县| 丘北县| 庄浪县| 哈尔滨市| 绥芬河市|