【SICP练习】42 练习2.1



练习2.1

我们已经进入了新的一章,这本书还是蛮会循序渐进的嘛,第一题挺简单的。

(define(make-rat n d)

  
(let ((g (gcd n d)))

     
(if (< d 0)

       
(cons (- (/ n g)) (- (/ d g)))

       
(cons n d))))

时间: 2024-09-24 19:10:08

【SICP练习】42 练习2.1的相关文章

【SICP练习】71 练习2.42

 练习2.42 这道题曾经在C#中写过,但是写出来的代码却没有Lisp中的朴素.用了一大堆的数组和for循环.但是在这里,用car.cdr来构造就行了. 我们按书中给出的步骤来一步一步求解这个问题.首先是棋局,就按书上的示意图,从上往下的来排皇后的位置.诸如此时书中皇后的位置为:'(6 3 1 7 5 8 2 4). 然后就是过程adjoin-position.rest-of-queens是在前k-1列放置k-1个皇后的一种方式,new-row是在第k列放置所考虑的编号.因此这一过程定义为:

【SICP练习】116 练习3.42

练习3-42 原文 Exercise 3.42. Ben Bitdiddle suggests that it's a waste of time to create a new serialized procedure in response to every withdraw and deposit message. He says that make-account could be changed so that the calls to protected are done outsi

【SICP练习】37 练习1.42

 练习1.42 这道题让我彻底爱上了lambda. 复合这一概念早在数学中便已经学过了,我们先来根据题目的意思写出能够平方和能够加一这两个过程.可能是因为我看书不认真吧,写了很多次才完成这两个过程. 一开始我都是以(define (inc f)......)来开始的,但是每次都没有返回结果.终于醒悟了,过程嘛,就是像前面第41最下面所讲的一种关联那样,我们是要将一个lambda表达式关联到一个名字上面,这个名字于是就变成了过程名.而且过程本身也根本不需要传入参数,这又不是函数. (defin

SICP第三章题解

SICP第三章题解 标签(空格分隔): SICP [toc] ex3-17 统计一个表结构中的序对个数 (define (count-pairs x) (count-helper x '())) (define (count-helper x seq) (if (memq? x seq) (count-helper (cdr x) seq) (count-helper (cdr x) (list x seq)) ) ) ex3-18 判断一个表中是否包含环. 我的思路:还是用memq去判断. (

把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另一个vector,也是将一个vector 的元素逐个赋值给另一vector 的对应元素: //将一个vector 赋值给另一vector,使用迭代器访问vector 中的元素 vector<int> ivec(10, 20); vector<int> ivec1; for (vecto

DreamweaverMX Ultradev探索(4-2)

dreamweaver DreamweaverMX Ultradev探索(4-2)修改数据库中的记录 <4> 嗯,这是不错了,那我怎么知道这里要显示哪一条记录呢?和用户点击的对不号怎么办?不用急,DW MX早就给我们想好了一切了,LOOK-!就是Move To Specific Record(移动到特定记录)!Application-->Server Behaviors-->Recordset Paging-->Move To Specific Record,同样,这也是DW

PHP开发程序应该注意的42个优化准则

PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语法.它可以比 CGI或者Perl更快速的执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多.下面介绍了42个程序的优化准则. 1.如果一个方法可静态化,就对它做静态声明.速率可提升至4倍. 2.echo 比 print 快. 3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接. 4.在执行for循环之前确定最大

Dreamweaver MX 2004视频宝典教程(42)

dreamweaver|教程 第 42 集:文字链接 课程目标:学习Dreamweaver中网页进级链接的设置方法. 课程要点:网页是通过链接联系起来的.本节介绍Dreamweaver中文字链接的创建方法. [全屏观看] | [下载视频] | 本教程尺寸为 800 * 600 建议全屏在线观看或下载观看,以达到最佳观看效果

PHP开发框架Yii Framework教程(42) Zii组件-Draggable示例

CJuiDraggable可以使包含着其中的其它UI组件实现拖放功能,它封装了 JUI Draggable插件. 要使某个UI组件可以 拖放,下面为使用CJuiDraggable的基本用法: <?php $this->beginWidget ('zii.widgets.jui.CJuiDraggable', array( 'options'=>array( 'cursor'=>'move', ), 'htmlOptions'=>array( 'style'=>'widt