计算机程序的构造和解释 练习 2.1

来源:互联网 发布:雅思大作文 知乎 编辑:程序博客网 时间:2024/05/29 19:38
#lang racket;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;: 有理数 的相关计算(define (add-rat x y )  (make-rat (+ (* (number x) (denom y))               (* (number y) (denom x)))            (* (denom x) (denom y))))(define (sub-rat x y )  (make-rat (- (* (number x) (denom y))               (* (number y) (denom x)))            (* (denom x) (denom y))))(define (mul-rat x y)  (make-rat (* (number x ) (number y))            (* (denom x) (denom y))))(define (equal-rat x y)  (= (* (number x) (denom y))     (* (number y) (denom x))));:(define (make-rat n d)  (let ((g (gcd n d)))    (if (or (and (> n 0) (< d 0))            (and (< n 0) (> d 0)))        ;: 使分子为负数        (cons (- (/ n g)) (/ d g))        ;: 都为正数        (cons (/ n g) (/ d g)))))(define (number x) (car x))(define (denom x) (cdr x))(define (print-rat x)  (newline)  (display (number x))  (display "/")  (display (denom x)));:(define one-half (make-rat  1 2))(print-rat one-half)(define one-third (make-rat  1 3))(print-rat one-third)(print-rat (add-rat one-half one-third))(print-rat (sub-rat one-half one-third))(print-rat (mul-rat one-half one-third))(print-rat (add-rat one-third one-third))(newline)(print-rat (make-rat -3 -6))(print-rat (make-rat 3 -6))(print-rat (make-rat -3 6))(print-rat (make-rat 3 6))
0 0