sicp Exercise 1.3 强行解答

题目如下:

Exercise 1.3. Define a procedure that takes three numbers as arguments and returns the sum of the

squares of the two larger numbers.

看到题目后,我个傻逼就严格遵循题意去解题了,在三个数中找到前两个大数,求其平方和。(解完后看网上的答案是将三个数累加,然后减去最小的)

解完后看看自己的代码,还是觉得自己解题的时候挺有勇气的...贴出来献个丑:

(define (f a b c)
  (cond ((> a b)
         (cond ((> a c)
                (cond ((> b c) (+ (* a a) (* b b)))
                      (else (+ (* a a) (* c c)))))
                (else (+ (* c c) (* a a)))))
        (else (cond ((< a c)
                     (cond ((> c b) (+ (* c c) (* b b)))
                           (else (+ (* b b) (* c c)))))
                     (else (+ (* b b) (* a a)))))))

补充一点证明以上解答确实没问题:

从3个数中取2个数,且没有顺序要求,就是一个n=3,r =2的无重复的组合问题,所以总共有三种组合方式。

代码中因为有顺序,所以是n=3,r=2的无重复的排列问题,总共有6种:

a,b a,c c,a c,b b,c b,a

忽略顺序之后就是a,b a,c b,c

时间: 2024-10-07 07:59:17

sicp Exercise 1.3 强行解答的相关文章

nomasp 博客导读:Android、UWP、Algorithm、Lisp(找工作中……

Profile Introduction to Blog 您能看到这篇博客导读是我的荣幸.本博客会持续更新.感谢您的支持.欢迎您的关注与留言.博客有多个专栏,各自是关于 Android应用开发 .Windows App开发 . UWP(通用Windows平台)开发 . SICP习题解 和 Scheme语言学习 . 算法解析 与 LeetCode等题解 .而近期会加入的文章将主要是算法和Android.只是其他内容也会继续完好. About the Author 独立 Windows App 和

常用网站整理

杂类: 在线LaTeX公式编辑器 题解: SICP结题集 by huangz SICP学习笔记和习题解答 by Kevlin

NoMasp博客导读

简介 博客简介 您能看到这篇博客是我的荣幸,本博客会定期持续更新.欢迎您的关注和留言. 个人简介 本科二年级,多年C#.Lisp编程经验,Windows App开发者,了解C.C++.HTML5等语言.密切关注人工智能.图像处理.云计算等,现阶段专攻Windows App开发. 博客导航 Algorithm 暂无 Amazing 暂无 Books 内容:2015读书计划及进度 <卡耐基写给男人的12堂财商课>摘录 C 暂无 CSharp C#相关的总结等. WPF和WinRT中的导航问题 文件

[SICP Notes] 1.1 The Elements of Programming

About the Book To know more about programming, I have decided to start reading the famous Structure and Interpretation of Computer Programs (SICP, or the Wizard Book), which is first published by MIT in 1985. The Wizard Book used MIT Scheme, which is

Coursera公开课Functional Programming Principles in Scala习题解答:Week 2

引言 OK.时间很快又过去了一周,第一周有五一假期所以感觉时间绰绰有余,这周中间没有假期只能靠晚上加周末的时间来消化,其实还是有点紧张呢!后来发现每堂课的视频还有对应的课件(Slide).字幕(subtitles)可以下载,这样下载视频学习和在线学习就只差课程中间的Exercise了 Week 2主要讲函数,函数在Scala里是first-class citizen,可以在任意域内出现,这门课其实也是在借Scala来讲函数式编程原理.好了,不多说,进入习题解析. 这周的作业主要是使用函数来表示一

资源向导之 &quot;SICP&quot;

Structure and interpretation of computer programs PDF 英文版本的书籍:https://github.com/penguiner/sicp-pdf 中文翻译过来自行搜索吧,一大把 不过这里给出中文版的勘误. 译者很有责任心! http://www.math.pku.edu.cn/teachers/qiuzy/books/sicp/errata.htm 豆瓣上面我一篇比较喜欢的书评: http://book.douban.com/review/4

SICP 习题 (1.38)解题总结

SICP 习题1.38 紧跟着习题1.37的方向,要求我们用习题1.37中定义的cont-frac过程计算数学家欧拉大师在论文De Fractionibus Continuis 中提到的e-2的连分式.说实话,我不知道论文De Franctionibus Continuis讲的是什么,我甚至不知道论文的题目是什么意思.不过,这一切都不能阻止我这个数学盲去解答这道SICP习题. 仔细阅读题目,我们可以发现题目要求我们计算的是下面这样的无穷连分式: 其中N永远等于1, D等于1 ,  2 , 1 ,

MIT 6.828 JOS学习笔记5. Exercise 1.3

Exercise 1.3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boot.S文件和系统为你反汇编出来的文件obj/boot/boot.asm.你也可以使用GDB的x/i指令来获取去任意一个机器指令的反汇编指令,把源文件boot.S文件和boot.asm文件以及在GDB反汇编出来的指令进行比较. 追踪到bootmain函数中,而且还要具体追踪到readsect()子函数里面.找

Lisp和SICP

大概不少programmer都看过<黑客与画家>,作者用了整整一章的篇幅讨论Lisp的强大.我自然就会手痒痒. 几个月前,几天内攻城略地搞定了Python,用的方法便是用Py重写之前开发的类库,这样就能很快熟悉语法,培养语感.喜上眉梢的我,也尝试将同样的策略用在Lisp上,我开始查看它的语法和函数,比如如何定义类和函数,如何赋值等等. 但我慢慢发现,Lisp几乎都不需要学语法,就是括号和几个基本过程,无非就是lambda, define, let,cons,car,cdr等等.虽然语法很快就学