SICP 习题2.1 make-rat 处理整数和负数版本
2016-06-10 17:53
323 查看
(define make-rat (lambda (n d) (let ((n1 (if (or (and (> n 0) (< d 0)) (and (< n 0) (> d 0))) -1 1)) (d1 1) (n2 (if (> n 0) n (* -1 n))) (d2 (if (> d 0) d (* -1 d)))) (let ((g (gcd n2 d2))) (cons (* n1 (/ n2 g)) (* d1 (/ d2 g))))))) (define (print-rat x) (newline) (display (numer x)) (display "/") (display (denom x))) (define numer car) (define denom cdr) (define one-half (make-rat 1 2)) (print-rat one-half) (print-rat (make-rat 2 -3)) (print-rat (make-rat -2 3)) (print-rat (make-rat -2 -3))
相关文章推荐
- Ruby中使用Block、Proc、lambda实现闭包
- Ruby中的block、proc、lambda区别总结
- C++实现的一个可以写递归lambda的Y函数
- 实例讲解C++编程中lambda表达式的使用
- C#特性之匿名方法和Lambda表达式
- 理解C#中的Lambda表达式
- 初步认识C#中的Lambda表达式和匿名方法
- C#3.0中Lambda表达式详解
- C#基础之Lambda表达式用法实例教程
- Java编程中使用lambda表达式的奇技淫巧
- 结合C++11新特性来学习C++中lambda表达式的用法
- 深入理解Java中的Lambda表达式
- Java8新特性之Lambda表达式浅析
- Java Lambda表达式详解和实例
- Java函数式编程(一):你好,Lambda表达式
- python中lambda与def用法对比实例分析
- Python lambda和Python def区别分析
- Python中的特殊语法:filter、map、reduce、lambda介绍
- 跟老齐学Python之大话题小函数(1)
- python基础教程之lambda表达式使用方法