;double的功能是2*n
(define (double n)
(+ n n))
(double 5)
;*函数的功能是a乘以b
(define (* a b)
(if (= b 0)
0
(+ a (* a (- b 1)))))
(* 3 4)
;havle-iter函数的功能是通过迭代获得n的一半的值,guess是初始猜测值
(define (havle-iter guess n)
(cond ((not (integer? n)) (display "error: 原因havle函数的参数是整数\n"))
(( and (< (double guess) n) (<= (double (+ guess 1)) n)) (havle-iter (+ 1 guess) n))
(( and (> (double guess) n)) (havle-iter (- guess 1) n))
(( and (< (double guess) n) (> (double (+ guess 1)) n)) (+ guess 0.5))
((= (double guess) n) guess)))
;havle函数的功能是通过迭代获得n的一半的值,guess是初始猜测值是1
(define (halve n)
(havle-iter 1 n))
(halve 16)
(halve 37)
(halve 35.5)
;even?函数功能是判断n是否是偶数,如果是偶数值为#t,否则为#f
(define (even? n)
(cond ((= n 0) #t)
((= n 1) #f)
((and (integer? n) (< n 0)) (even? (+ n 2)))
((and (integer? n) (> n 1)) (even? (- n 2)))
(else #f)))
(even? 13)
(even? 22)
(even? 22.5)
;square函数的功能是得到n的平方,如果是非零正偶数则递归计算4倍二分之n的平方
(define (square n)
(cond ((= n 0) 0)
((< n 0) (square (- 0 n)))
((and (> n 0) (even? n)) (double (double (square (halve n)))))
((> n 0) (+ (square (- n 1)) (double (- n 1)) 1))))
(square 7)
(square 12)
(define (fast-expt b n)
(cond ((= 0 n) 1)
((even? n) (fast-expt (square b) (halve n)))
(else (* b (fast-expt b (- n 1))))))
(fast-expt 2 10)
分享到:
相关推荐
在SICP中,练习2.5通常涉及到了过程定义、抽象和组合,可能需要读者理解并实现一种计算机制,如迭代或递归。 2. **chapter2.ss**: 这可能是整个第二章所有练习题的集合或者部分题目的解答。通过这个文件,读者可以...
《SICP:我的SICP练习》是关于Scheme编程语言和计算机程序设计原理的一份学习资料。SICP,全称《结构与解释程序》(Structure and Interpretation of Computer Programs),是由Harvard大学的Hal Abelson和MIT的...
《计算机程序的构造和解释》(SICP)是一本极具影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman所著,MIT出版社出版。这本书以其深入探讨编程概念、程序设计方法以及计算机系统的工作原理而闻名。1-3...
《SICP习题解答,主要第一章的内容习题答案》 SICP,全称《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释),是计算机科学领域的一本经典教材,由MIT(麻省理工学院)的 Harold ...
"sicp-solutions"是一个针对该书练习题的解答集,主要使用了Scheme语言,一个Lisp方言,而具体的实现环境是mit-scheme 9.2。 Scheme语言是Lisp家族的一员,以其简洁的语法和强大的函数式编程特性闻名。在"sicp-...
"sicp-clojure" 项目则是将 SICP 的练习用 Clojure 语言进行了实现,为学习者提供了从不同角度理解和应用 Lisp 风格编程的良好资源。 在这个项目中,你可以找到一系列 Clojure 代码,它们对应于 SICP 教程中的各个...
在SICP的练习中,我们不仅会遇到基础的算法实现,还会涉及到过程抽象、数据结构设计、编译器构造等高级主题。 1. **过程抽象**:在Scheme中,过程是解决问题的基本单元。SICP通过大量的练习,教会我们如何用过程来...
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
文件"sicp-main"可能是包含了SICP书中各章节练习的解答或者是实现,这将有助于读者检验自己的理解或参考解题思路。在阅读和实践SICP的过程中,以下是一些关键知识点: 1. **函数式编程**:SICP的核心是函数式编程...
《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
《SICP解决方案:对SICP练习的回答》 该资源是关于《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简称SICP)这本书的解答集,作者针对书中各章节的练习提供了详尽的解答,旨在...
《计算机程序的构造与解释》(Structure and Interpretation of Computer Programs,简称SICP)是一本备受推崇的经典计算机科学教材,由Harold Abelson和Gerald Jay Sussman撰写,并由MIT出版社出版。这本书以其深入...
《SICP解题集》是一份专注于探讨和解答《结构与解释程序》(Structure and Interpretation of Computer Programs,简称SICP)一书中习题的资源。SICP是计算机科学领域的一本经典教材,由Harold Abelson、Gerald Jay ...
- **1.2.4 幂运算**(Exponentiation):介绍幂运算的不同实现方法。 - **1.2.5** - **第二章:通过数据构建抽象**(Building Abstractions with Data) - 探讨如何使用数据结构来组织和操作信息,包括列表、树...
《SICP:在 Scheme 中制定的 SICP 编程练习》是针对计算机科学教育领域的一本经典教材——《结构与解释程序》(Structure and Interpretation of Computer Programs,简称 SICP) 的实践部分。SICP 由 Harold Abelson ...
SICP-Python版本
SICP 使用的scheme解释器 以前叫DrScheme