(define (gcd a b remainder-count)
(if(= b 0)
(begin (display "\nremainder count: ")
(display remainder-count)
(display "\n gcd result:")
(display a)
(display "\n")
a)
(gcd b (remainder a b) (+ remainder-count 1))))
(gcd 12 9 0)
;(gcd 12 28 0)
(define (new-if predicate then-clause else-clause)
(cond (predicate then-clause)
(else else-clause)))
(define (gcd-new-if a b remainder-count)
(new-if (= b 0)
(begin (display "\nremainder count: ")
(display remainder-count)
(display "\n gcd result:")
(display a)
(display "\n")
a
)
(gcd-new-if b (remainder a b) (+ remainder-count 1))))
(gcd-new-if 12 9 0)
;(new-if (> 1 2) (begin (display "1") (display "1") )(display "2"))
以上gcd函数自动记录remainder调用次数。(gcd 12 9 0)调用remainder次数为2次。
if的scheme运算是正则运算,不管怎么样子都是先对谓词求值,然后分支运算。
要使得scheme运算为应用序,则需要使用new-if,自己定义个函数来代替if,由于new-if是自定义的函数,则使用应用序先对其参数顺序求值。因此会导致gcd-new-if 循环调用而产生死循环,并且由于remainder的存在,在循环调用的过程中,remainder a b 的参数b为0时,则发生错误,即求余运算中的除数为0,导致错误。
分享到:
相关推荐
在SICP中,练习2.5通常涉及到了过程定义、抽象和组合,可能需要读者理解并实现一种计算机制,如迭代或递归。 2. **chapter2.ss**: 这可能是整个第二章所有练习题的集合或者部分题目的解答。通过这个文件,读者可以...
每个练习都是对SICP理论知识的实际应用,有助于提升编程思维和解决问题的能力。 1. **函数式编程基础**:Scheme强调使用函数作为基本的构造块。学习者会接触到如何定义函数、使用λ表达式创建匿名函数、利用递归...
- **λ演算**:SICP引入了λ演算作为理解计算的基础,这是一种形式化的函数定义和应用方式,它是函数式编程语言的理论根基。 - **过程**:在SICP中,过程是λ演算中的核心概念,代表可执行的计算操作。 - **组合...
《SICP习题解答,主要第一章的内容习题答案》 SICP,全称《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释),是计算机科学领域的一本经典教材,由MIT(麻省理工学院)的 Harold ...
4. **递归**:递归是Scheme和Lisp编程中的核心概念,SICP的练习解决方案中充满了各种递归应用,如树的遍历、斐波那契数列等。 5. **元编程**:元编程在SICP中占有重要地位,通过元编程可以操作和修改程序本身。mit-...
"sicp-clojure" 项目则是将 SICP 的练习用 Clojure 语言进行了实现,为学习者提供了从不同角度理解和应用 Lisp 风格编程的良好资源。 在这个项目中,你可以找到一系列 Clojure 代码,它们对应于 SICP 教程中的各个...
《SICP:我对SICP练习的回答》 SICP,全称为《Structure and Interpretation of Computer Programs》,是一本由Harvard大学的Herman Tulleken和MIT的Gerald Jay Sussman、Guy L. Steele Jr.共同编著的经典计算机...
通过阅读这些解答,读者可以了解到如何应用SICP中的概念来解决实际问题,如递归、数据结构的构造与操作、过程抽象、组合器与解释器的构造等。 例如,SICP的第一章主要介绍了函数和过程的概念,以及如何使用它们来...
文件"sicp-main"可能是包含了SICP书中各章节练习的解答或者是实现,这将有助于读者检验自己的理解或参考解题思路。在阅读和实践SICP的过程中,以下是一些关键知识点: 1. **函数式编程**:SICP的核心是函数式编程...
《计算机程序的构造与解释》(Structure and Interpretation of Computer Programs,简称SICP)是一本备受推崇的经典计算机科学教材,由Harold Abelson和Gerald Jay Sussman撰写,并由MIT出版社出版。这本书以其深入...
《SICP:在 Scheme 中制定的 SICP 编程练习》是针对计算机科学教育领域的一本经典教材——《结构与解释程序》(Structure and Interpretation of Computer Programs,简称 SICP) 的实践部分。SICP 由 Harold Abelson ...
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
- **1.1.5 过程应用的替换模型**(The Substitution Model for Procedure Application):提出一种直观的模型来理解过程的应用。 - **1.1.6 条件表达式和谓词**(Conditional Expressions and Predicates):讨论...
《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...
- **扩展练习:区间算术 (Extended Exercise: Interval Arithmetic)**:提供了一个具体的应用场景来进一步巩固所学概念。 - **层次数据与闭包性质 (Hierarchical Data and the Closure Property)** - **序列表示 ...
《SICP解题集》是一份专注于探讨和解答《结构与解释程序》(Structure and Interpretation of Computer Programs,简称SICP)一书中习题的资源。SICP是计算机科学领域的一本经典教材,由Harold Abelson、Gerald Jay ...
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
综上所述,本书《a_book_sicp_py》是一本适合初学者到中级程序员的参考书籍,旨在通过SICP的经典理念和Python的实践应用,帮助读者深入理解计算机科学的基本概念,并掌握Python编程的精髓。通过对函数、对象、程序...