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

SICP-练习2.1

时间:2014-07-18 13:27:35      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:blog   2014   代码   re   c   file   

【练习2.1】

请定义出make-rat的一个更好的版本,使之可以正确处理整数和负数。当有理数为正时,make-rat应当将其规范化,使它的分子和分母都是正的。如果有理数为负,那么就应只让分子为负。

【分析】

分子、分母的符号总共有四种情况:

1. 分子、分母都为正数,

2. 分子为负数,分母为正数。

这两种情况下,输入和输出的符号一致。

3. 分子、分母都为负数,

4. 分子为正数,分母为负数。

对于第3种情况:(-n) / (-d) = n / d

对于第4种情况:n / (-d) = (- n) / (- (-d)) = (- n) / d

这两种情况,输入的分子和分母恰好和输出的分子分母符号相反。

【Lisp代码】

(define  (make-rat n d)
	(if (< d 0)
		(cons (- n) (- d))
		(cons n d)))


SICP-练习2.1,布布扣,bubuko.com

SICP-练习2.1

标签:blog   2014   代码   re   c   file   

原文地址:http://blog.csdn.net/jjjcainiao/article/details/37914167

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