問題3.58 – SICP(計算機プログラムの構造と解釈)その152

問題3.58

expand 手続きは割り算の手計算の手続きに似ている。

;; stream の最初の n 個の要素を印字する手続き
(define (stream-head s n)
  (define (iter s n)
    (if (<= n 0)
      'done
      (begin
        (display (stream-car s))
        (display ", ")
        (iter (stream-cdr s) (- n 1)))))
  (iter s n))

(define (expand num den radix)
  (cons-stream
    (quotient (* num radix) den)
    (expand (remainder (* num radix) den) den radix)))

(expand 1 7 10)

(stream-head (expand 1 7 10) 10)
gosh> 1, 4, 2, 8, 5, 7, 1, 4, 2, 8, done
(/ 1.0 7.0)
gosh> 0.14285714285714285

SICP 問題3.58 (expand 1 7 10) の処理

(expand 3 8 10)

(stream-head (expand 3 8 10) 10)
gosh> 3, 7, 5, 0, 0, 0, 0, 0, 0, 0, done
(/ 3.0 8.0)
gosh> 0.375

SICP 問題3.58 (expand 3 8 10) の処理

計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»