码迷,mamicode.com
首页 > 其他好文 > 详细

【SICP练习】141 练习3.72

时间:2015-03-29 12:17:48      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

练习3-72

原文

Exercise 3.72. In a similar way to exercise 3.71 generate a stream of all numbers that can be written as the sum of two squares in three different ways (showing how they can be so written).

代码

 (define (square x) (* x x)) 
 (define (sum-square x) (+ (square (car x)) (square (cadr x)))) 
 (define (squaresn s) 
         (define (stream-cadr s) (stream-car (stream-cdr s))) 
         (define (stream-caddr s) (stream-cadr (stream-cdr s))) 
         (let ((scar (stream-car s)) 
                   (scadr (stream-cadr s)) 
                   (scaddr (stream-caddr s))) 
                 (if (= (sum-square scar) (sum-square scadr) (sum-square scaddr)) 
                         (cons-stream (list (sum-square scar) scar scadr scaddr) 
                                                  (squaresn (stream-cdr (stream-cdr (stream-cdr s))))) 
                         (squaresn (stream-cdr s))))) 
 (define square-numbers  
         (squaresn (weighted-pairs integers integers sum-square))) 

【SICP练习】141 练习3.72

标签:

原文地址:http://blog.csdn.net/nomasp/article/details/44725477

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!