【SICP练习题】127 练习3.58

【SICP练习】127 练习3.58

练习3-58

原文

Exercise 3.58. Give an interpretation of the stream computed by the following procedure:

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

(Quotient is a primitive that returns the integer quotient of two integers.) What are the successive elements produced by (expand 1 7 10) ? What is produced by (expand 3 8 10) ?

分析

(expand 1 7 10)
=> (quotient (* 1 10) 7)
=> 1
=> (expand (remainder 10 7) 7 10)
=> (quotient (* 3 10) 7)
=> 4
=> (expand (remainder 30 7) 7 10)
=> (quotient (* 2 10) 7)
=> 2
……
……
=> 1 4 2 8 5 7 4 2 8 5 7 ...


(expand 3 8 10)
……
……
=> 3 7 5 0 0 0 ...