`
hotcharm
  • 浏览: 17105 次
  • 性别: Icon_minigender_1
  • 来自: 义乌
最近访客 更多访客>>
社区版块
存档分类
最新评论

sicp练习1.17 只有加减法 实现快速求幂

F# 
阅读更多

;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第二章练习题的解答

    在SICP中,练习2.5通常涉及到了过程定义、抽象和组合,可能需要读者理解并实现一种计算机制,如迭代或递归。 2. **chapter2.ss**: 这可能是整个第二章所有练习题的集合或者部分题目的解答。通过这个文件,读者可以...

    sicp:我的 SICP 练习

    《SICP:我的SICP练习》是关于Scheme编程语言和计算机程序设计原理的一份学习资料。SICP,全称《结构与解释程序》(Structure and Interpretation of Computer Programs),是由Harvard大学的Hal Abelson和MIT的...

    SICP 习题答案

    《计算机程序的构造和解释》(SICP)是一本极具影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman所著,MIT出版社出版。这本书以其深入探讨编程概念、程序设计方法以及计算机系统的工作原理而闻名。1-3...

    SICP习题解答,主要第一章的内容习题答案

    《SICP习题解答,主要第一章的内容习题答案》 SICP,全称《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释),是计算机科学领域的一本经典教材,由MIT(麻省理工学院)的 Harold ...

    sicp-solutions:SICP练习解决方案

    "sicp-solutions"是一个针对该书练习题的解答集,主要使用了Scheme语言,一个Lisp方言,而具体的实现环境是mit-scheme 9.2。 Scheme语言是Lisp家族的一员,以其简洁的语法和强大的函数式编程特性闻名。在"sicp-...

    sicp-clojure:在 Clojure 中解决的 SICP 练习

    "sicp-clojure" 项目则是将 SICP 的练习用 Clojure 语言进行了实现,为学习者提供了从不同角度理解和应用 Lisp 风格编程的良好资源。 在这个项目中,你可以找到一系列 Clojure 代码,它们对应于 SICP 教程中的各个...

    sicp:我对SICP练习的回答

    在SICP的练习中,我们不仅会遇到基础的算法实现,还会涉及到过程抽象、数据结构设计、编译器构造等高级主题。 1. **过程抽象**:在Scheme中,过程是解决问题的基本单元。SICP通过大量的练习,教会我们如何用过程来...

    sicp in python 中文 sicp 中文

    sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download&gt;&gt;&gt;https://github.com/wizardforcel/sicp-py-zh

    sicp:SICP练习的解决方案

    文件"sicp-main"可能是包含了SICP书中各章节练习的解答或者是实现,这将有助于读者检验自己的理解或参考解题思路。在阅读和实践SICP的过程中,以下是一些关键知识点: 1. **函数式编程**:SICP的核心是函数式编程...

    sicp 2.2.4节图形语言

    《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...

    SICP中文第二版

    SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版

    SICP-Solutions:我对 SICP 练习的回答

    《SICP解决方案:对SICP练习的回答》 该资源是关于《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简称SICP)这本书的解答集,作者针对书中各章节的练习提供了详尽的解答,旨在...

    SICP(python中文带书签)

    《计算机程序的构造与解释》(Structure and Interpretation of Computer Programs,简称SICP)是一本备受推崇的经典计算机科学教材,由Harold Abelson和Gerald Jay Sussman撰写,并由MIT出版社出版。这本书以其深入...

    SICP 解题集

    《SICP解题集》是一份专注于探讨和解答《结构与解释程序》(Structure and Interpretation of Computer Programs,简称SICP)一书中习题的资源。SICP是计算机科学领域的一本经典教材,由Harold Abelson、Gerald Jay ...

    sicp-Structure and Interpretation of Computer Programs

    - **1.2.4 幂运算**(Exponentiation):介绍幂运算的不同实现方法。 - **1.2.5** - **第二章:通过数据构建抽象**(Building Abstractions with Data) - 探讨如何使用数据结构来组织和操作信息,包括列表、树...

    SICP:在 Scheme 中制定的 SICP 编程练习

    《SICP:在 Scheme 中制定的 SICP 编程练习》是针对计算机科学教育领域的一本经典教材——《结构与解释程序》(Structure and Interpretation of Computer Programs,简称 SICP) 的实践部分。SICP 由 Harold Abelson ...

    SICP-Python版本

    SICP-Python版本

    SICP 使用的scheme解释器

    SICP 使用的scheme解释器 以前叫DrScheme

Global site tag (gtag.js) - Google Analytics