乐正

Actions speak louder than words.

Sicp-ex3-58

问题

请给下面过程所计算的流的一种解释:

1
2
3
4
(define (expand num den radix)
  (cons-stream
    (quotient (* num radix) den)
    (expand (remainder (* num radix) den) den radix)))

(这里的quotient是求两个整数的整数商的基本函数)。(expand 1 7 10)会顺序的产生哪些元素?(expand 3 8 10)会产生哪些元素?

解答

这个流是求整数num被放大radix倍后的值与den整数的整数商,然后将其余当做下一个num

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(define s (expand 1 7 10))

(stream-ref s 0)
;Value: 1

(stream-ref s 1)
;Value: 4

(stream-ref s 2)
;Value: 2

(stream-ref s 3)
;Value: 8

(stream-ref s 4)
;Value: 5

(stream-ref s 5)
;Value: 7

draft

« sicp-ex3-57 sicp-ex3-59 »

Comments