你是在正确的道路上。唯一需要调整的是递归定义的精确表达。
考虑以下(其中---表示我们正在添加):
1 1 2 3 5 8 ... fib 1 2 3 5 8 13 ... (stream-rest fib) ------------------ --------------------------------- 2 3 5 8 13 21 ... (stream-rest (stream-rest fib))
注意 (stream-rest (stream-rest fib)) 是总和 fib 和 (stream-rest fib) 。 这意味着我们可以定义 fib 如:
(stream-rest (stream-rest fib))
fib
(stream-rest fib)
(define fib (stream-cons 1 (stream-cons 1 (stream-add fib (stream-rest fib)))))