sicp习题试解 (2.5)

类别:编程语言 点击:0 评论:0 推荐:

; ======================================================================
;
; Structure and Interpretation of Computer Programs
; (trial answer to excercises)
;
; 计算机程序的构造和解释(习题试解)
;
; created: code17 04/23/05
; modified:
; (保持内容完整不变前提下,可以任意转载)
; ======================================================================


;; SICP No.2.5

;; 因为2和3互质,2^a * 3^b的结果可以完整保存a和b的信息,因此

(define (cons a b) (* (expt 2 a) (expt 3 b)))

(define (fact-n x c a)
(if (> (remainder x c) 0)
a
(fact-n (/ x c) c (+ a 1))))

(define (car z) (fact-n z 2 0))
(define (cdr z) (fact-n z 3 0))


;; Test-it:
;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.
;; > (car (cons 3 6))
;; 3
;; > (cdr (cons 3 6))
;; 6

本文地址:http://com.8s8s.com/it/it22195.htm