计算机程序的构造和解释作业:1.6到1.8

[公开课] CS61A打卡Spring2018(week1-week8): Structure and Interpretation of Computer Programs CS61A(2018 & 2019 mixed) 2019.03.07: Week 1 Expressions; (Primitive expressions; Call expressions (Operator and Operand); ) Names, Assignment, and User-Defined Functions; E 阅读详情
1.6
(define (new-if pre then-clause else-clause)
	(cond (pre then-clause)
		(else else-clause)))
(define (sqrt-iter guess target)
	(new-if (good-enough? guess target)
		guess
		(sqrt-iter (improve guess target) target)))
(define (improve guess target)
	(average guess (/ target guess)))
(define (average x y)
	(/ (+ x y) 2))
(define (good-enough? guess target)
	(< (abs (- (square guess) target)) 0.01))
(define (sqrt x)
	(sqrt-iter 1.0 x))
这道题目就是因为每次使用new-if的时候,因为是应用序,所以所有的参数都必须首先计算出来,而new-if的第三个参数是一个递归。因此会调用这个递归,又因为这个歌递归有是一个递归,因此产生的
无限循环,这儿的问题就是递归每次都在进行,但是分支并没有发生。
输出:
#|kawa:1|# (define (sqrt x)
#|(---:2|# 	(sqrt-iter 1.0 x))
/dev/stdin:2:2: warning - no declaration seen for sqrt-iter
#|kawa:3|# (define (good-enough? guess target)
#|(---:4|# 	(< (abs (- (square guess) target)) 0.01))
#|kawa:5|# (define (average x y)
#|(---:6|# 	(/ (+ x y) 2))
#|kawa:7|# 2
2
#|kawa:8|# (define (improve guess target)
#|(---:9|# 	(average guess (/ target guess)))
#|kawa:10|# 2
2
#|kawa:11|# (define (new-if pre then-clause else-clause)
#|(---:12|# 	(cond (pre then-clause)
#|(---:13|# 		(else else-clause)))
#|kawa:14|# 2
2
#|kawa:15|# (define (sqrt-iter guess target)
#|(---:16|# 	(new-if (good-enough? guess target)
#|(---:17|# 		guess
#|(---:18|# 		(sqrt-iter (improve guess target) target)))
/dev/stdin:16:2: warning - unreachable procedure call
/dev/stdin:18:3: note - this operand never finish()es
#|kawa:19|# 2
2
#|kawa:20|# (new_if #t 10 1)
/dev/stdin:20:1: warning - no declaration seen for new_if
/dev/stdin:20:1: unbound location new_if
	at gnu.mapping.SharedLocation.get(SharedLocation.java:22)
	at gnu.mapping.ThreadLocation.get(ThreadLocation.java:105)
	at atInteractiveLevel$11.run(stdin:20)
	at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:309)
	at gnu.expr.ModuleExp.evalModule(ModuleExp.java:210)
	at kawa.Shell.run(Shell.java:279)
	at kawa.Shell.run(Shell.java:194)
	at kawa.Shell.run(Shell.java:175)
	at kawa.ReplDocument$2.apply0(ReplDocument.java:97)
	at gnu.mapping.RunnableClosure.run(RunnableClosure.java:78)
	at gnu.mapping.Future.run(Future.java:44)
#|kawa:21|# (new-if #t 10 1)
10
#|kawa:22|# (define (sqrt-iter guess target)
#|(---:23|# 	(new-if (good-enough? guess target)
#|(---:24|# 		guess
#|(---:25|# 		(sqrt-iter (improve guess target) target)))
/dev/stdin:23:2: warning - unreachable procedure call
/dev/stdin:25:3: note - this operand never finishes
#|kawa:26|# (define (sqrt x)
#|(---:27|# 	(sqrt-iter 1.0 x))
#|kawa:28|# (sqrt 4)
...(嘿嘿,又卡死)



1.7,这个问题就是确定精度的问题,对于一个很小的数来说精度必须足够小,对于一个较大的数来说精度又应该方法。重要的是,人无法精确控制这个过程。这个就是改变一下good-enough?函数了。

(define (average x y)
	(/ (+ x y) 2))
(define (improve guess target)
	(average guess (/ target guess)))
(define (good-enough? guess target)
	(< (abs (- (square guess) target)) (/ target guess guess 1000)))
(define (sqrt-iter guess target)
	(if (good-enough? guess target)
		guess
		(sqrt-iter (improve guess target) target)))
(define (sqrt x)
	(sqrt-iter 1.0 x))

1.8 这个题目类似于求平方,只是需要改变一些参数。

(define (average-by-three x y)
	(/ (+ x y) 3))
(define (pow target n)
	(if (= n 0) 1 (* (pow target (- n 1)) target)))
(define (improve y x)
	(average-by-three (* 2 y) (/ x (pow y 2))))
(define (good-enough? y x)
	(< (abs (- (pow y 3) x)) 0.01))
(define (cube-iter y x)
	(if (good-enough? y x)
		y
		(cube-iter (improve y x) x)))
(define (cube x)
	(cube-iter (/ x 2) x))



11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南 本文介绍了如何使用 LangGraph 构建生产级 AI Agent,重点解析了 LangGraph 的核心设计、节点与边的实现方法论、生产级实现技巧以及性能优化策略。LangGraph 通过图结构抽象复杂 AI 工作流,核心组件包括节点、边、状态和检查点。节点通过 Python 函数封装原子业务逻辑,边通过条件分支实现动态工作流。生产级实现技巧包括状态管理、多会话控制和错误处理机制。性能优化策略涉及并行执行和缓存机制设计。文章还提供了旅行规划 Agent 的实战案例和常见问题解决方案,帮助开发者构建高效、 阅读详情

相关推荐

IMU自动校准论文与代码实现A Robust and Easy to Implement Method for IMU Calibration without External Equipments

PART1 摘要 低成本的惯性测量单元会受到系统误差的影响,系统误差由标度因子和轴偏差造成,这会降低位置和姿态估计的精度。 本文提出了一种无需任何外部设备的,鲁棒性强,易于实现的IMU校准方法。 该程序基于多放置方案,再估计传感器偏差的同时,为加速度和陀螺仪三轴的尺度和偏差系数。我们的方法只需要用手移动传感器,并将其放置在一组不同的静态位置(姿态)。 论文描述了一个鲁棒的快速校准协议,...

qq_29313679的博客 5308

计算机程序的构造与解释 练习1.16, 1.19

练习1.16要求仿造fast-expt使用迭代方式求幂。这种方式求幂实在是高明!正常的求幂方式是n*n*...*n,需要乘n趟,但是这个方式每次将解空间缩减一半(很像二分查找),所以最后只需要求logn次。 这里尾递归每趟的不变量就是fast_iter_expt的结果,即p,同样的,偶数时,利用(b^2)^n/2的关系,即每趟n减半,p加倍,而奇数时则变换为偶数 (define (even

笨狐狸 1213

深度学习中的编码器-解码器架构

解码的作用:转换为人类可理解的形式,解码器的任务是将编码器生成的中间表示(上下文向量)转换回人类可理解的输出形式(如翻译后的文本、生成的图像描述等)。解码器通过逐步生成输出序列,使得最终的输出符合人类的理解和需求。编码的作用:转换为机器可理解的形式,编码器将输入数据(如文本、图像等)转换为一种机器更容易处理和理解的形式,即上下文向量或编码。在深度学习中,编码器(Encoder)解码器(Decoder)是常见的神经网络架构,通常用于处理序列到序列(seq2seq)任务,如机器翻译、文本摘要和图像描述等。

xxk1323的博客 1093

练习1.6 解释下面程序片段是否合法

解释下面程序片段是否合法。 std::cout &lt;&lt; "The sum of " &lt;&lt; v1;     //合法 &lt;&lt;" and " &lt;&lt; v2;                    //不合法,开头缺少 std::cout &lt;&lt;" is " &lt;&lt; v1 + v1 &amp

bensoho的博客 838

Windows11家庭版开启虚拟化与WSL安装操作手册

Windows 11 家庭版完全支持 WSL 2,无需升级到专业版即可享受 Linux 开发环境。通过本手册介绍的步骤,您可以顺利安装和配置 WSL,并掌握系统更新后的维护技巧。WSL 为开发者提供了在 Windows 环境下使用 Linux 工具链的便利,尤其适合需要跨平台开发的场景。随着使用深入,您会发现 WSL 生态系统的强大之处,它不仅能提高开发效率,还能让 Windows 用户体验到 Linux 的强大功能。建议定期查看微软官方文档,了解 WSL 的最新功能和最佳实践。

m0_54846764的博客 3022

thinkphp5.0.24反序列化漏洞分析

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

m0_67392182的博客 1871

计算机程序的构造与解释作业:练习1.1到1.5

1.1,我用的是kawa,这是用java实现的一个scheme的解释器,kawa(在window下直接双击打开就可以运行) #|kawa:1|# 10 10 #|kawa:2|# (+ 5 3 4) 12 #|kawa:3|# (- 9 1) 8 #|kawa:4|# (/ 6 2) 3 #|kawa:5|# (+ (* 2 4) (- 4 6)) 6 #|kawa:6|#

ssjssh的专栏 1281

企业级AI项目落地实战指南

企业级 AI 项目落地需构建“分阶段实施 + 多维度风控”的双轮驱动体系:实施端通过 POC 验证技术可行性、试点建立评估标准、规模化实现价值复制,各阶段需结合行业案例(如东阳光药、旺盈集团)提炼可复用经验;风险端则需覆盖技术(数据安全、模型稳定性)、合规(全球监管动态)、组织(人才与文化)维度,通过工具化框架(AI TRISM)与案例策略(邮储银行可解释性设计、拓斯达培训体系)实现风险可控。最终通过“场景聚焦 - 合规嵌入 - 持续优化”的循环机制,实现 AI 技术从“试点成功”到“全面价值创造”的跨越。

2509_93209761的博客 1437

SICP-《计算机程序的构造和解释》之习题分析与收获——练习1.30

(define (sum term a next b)     (define (iter a result)         (if (> a b)             result             (iter (next a)                   (+ (term a) result))))        (iter a 0))            

oo0o0o0qq0的专栏 607

语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch)

本文详细介绍了基于PyTorch的轻量级语义通信系统LICRnet的实现,专注于图像压缩重建中的语义信息保留。通过深度可分离卷积、可变窗口多尺度注意力等创新技术,显著降低计算量并提升性能,特别适用于无人机巡检、远程医疗等物联网场景。文章包含完整的代码实现、训练策略及部署优化方案。

weixin_27697385的博客 220

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 632

计算机程序的构造和解释(SICP)确实是本好书~

以前害怕写程序, 那时的我啥也不懂。 偶然听人说SICP很不错, 到图书馆借来看看,看完第一章确实觉得很不错。 一开始就讲递归和迭代,简直就是变态~ 然后前几天看到codingbat又递归的题目,拿来练练手, 感觉很爽啊。

zafzap1的专栏 2541

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 640

计算机程序的构造与解释作业:练习1.9到1.10

1.9  第一个过程显然是递归,用替换模型张开后,这个过程是一个先增大后减小的过程。从状态变量的反面来说,a在这个过程里面存储了一个状态,他是一个计数器(判断是不是变量一个状态变量的基本方法就是这个变量是不是可变)。但是b则完全没有状态,这个程序的结果依赖于每一个中间步骤,这个过程的执行也不能停下来。 而第二个过程则是铁定的过程,因为a和b都是一个状态变量。a是一个计数器,b则就是结果。因此这

ssjssh的专栏 1272

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c语言基础预习作业

什么是计算机程序?什么是编程语言?为什么需要编程语言?编程语言是用来干嘛的?举例一些编程语言,以及他们各自的特点? 答:计算机程序是指一组指示计算执行动作或做出判断的指令,通常用某种程序设计语言编写,运行与某种目标体结构上。编程语言是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所...

君子不争的博客 1158

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

2019第十周作业

这次作业属于哪个课程 C语言程序设计 这次作业要求在哪里 第十周作业 我在这个课程的目标是 了解招聘所需 如何有效地记忆与学习?如何提问? 参考文献 http://mindhacks.cn/2011/11/04/how-to-interview-a-person-for-two-years/ http://mindhacks.cn/2009/03/28/effective-l...

weixin_30414305的博客 152

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

20221905 2022-2023-2 《网络攻防实践》 第8周作业

《网络攻防实践》 第8周作业

永远骄傲和完美永远不妥协 1096

python大作业思路_python大作业

原博文2018-04-22 10:59 −词云---利用python对电影评价的爬取 一、抓取网页数据 1:网页爬取一些数据的前期工作 from urllib import request resp = request.urlopen('https://movie.douban.com/nowplaying/hangzhou/') html...相关推荐2019-09-28 21:13 −Pyth...

weixin_39777464的博客 157

计算机公开课推荐 2019.8

欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 面试求职交流群 724187166 ApacheCN 学习资源 编程 哈佛 CS50:计算机科学导论 视频 MIT 6.00.1x:计算机科学和 Python 编程导论 视频 中文版教材 UCB CS61a:计算机程序的构造与解释(Python) 主页 中文版教材 数据结构·算法 ...

龙哥盟 4万+

python求周长_作业-python面向对象编程-计算周长和面积

原博文2019-03-26 22:36 −-*- coding:utf-8 -*-# 2,定义一个形状类(接口) 包含计算周长,面积的方法# 定义一个矩形类,实现计算矩形的周长,面积# 定义一个圆类,实现计算圆的周长,面积# 分别实例化矩形类和圆类,实现周长和面积的计算输出class shape(): def rec_area(self...08516相关推荐2019-09-28 21:13 −...

weixin_39962125的博客 1278

8.pagerank算法 图论算法 随机算法

11

m0_57656758的博客 798

UCB CS61AS 使用 Racket 进行 SICP 学习(一)

欢迎来到 CS 61AS!在本课中,我们将探索 Racket 编程语言的基础知识,并了解本课程的核心思想。注意:以下段落中的所有链接都是完全可选阅读的,仅供读者的兴趣和娱乐。请注意,在前一页中,几乎没有提到编程语言。这是因为在整个事物的大局中,编程语言并不重要。它们只重要是因为对于任何给定的问题,一种语言可能比另一种语言更少的代码行数来解决问题,或者一种语言可能让我们更有效地解决问题,等等。那么如何教授计算机科学的问题呢?我们应该使用哪种语言?我们选择了 Racket,这是Lisp的一个方言。

龙哥盟 1412

python图书管理系统作业_python大作业-图书管理系统

原博文2018-12-11 10:59 −1 #缺少循环执行和错误处理 2 #add()函数 添加了循环执行 3 #错误处理:regist()函数 登录和退出选择的时候添加了错误处理 4 import sys 5 import importlib 6 importlib.reload(sys) 7 Book=[['高数','...01729相关推荐2019-09-28 21:13 −P...

weixin_39744408的博客 729

C语言预习作业

 1.什么是计算机程序?什么是编程语言?为什么需要编程语言?编程语言是用来干嘛的?举例一些编程语言以及他们各自的特点。 答: 计算机程序:是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标的体系结构上。   编程语言:专门和计算机交流的语言就叫做编程语言,俗称计算机语言 需要编程语言的原因:电脑每做的一次动作,一个步骤,都是按照已经用编程语言编好的程序来

linuxwln的博客 475

2019春第十周作业

一、刘未鹏的博客:怎样花两年时间面试一个人(http://mindhacks.cn/2011/11/04/how-to-interview-a-person-for-two-years/) 请回答以下两个问题:1.这篇博客下面的评论中,请列出你最感到有共鸣的三条(不限于三条)。10分2.读了这篇博客,你有哪三点具体的收获(不限于三点)。10分 共鸣点: (1): 蒙面超人23...

156

程序设计和c语言ppt,程序设计和C语言.ppt

《程序设计和C语言.ppt》由会员分享,可在线阅读,更多相关《程序设计和C语言.ppt(25页珍藏版)》请在装配图网上搜索。1、2020/7/22,1,C程序设计,课程别名:高级语言程序设计 C语言程序设计 C语言 软件平台:Turbo C 2.0(技术核心) Win-TC 1.91(使用方便) VC+6.0(高级平台),课时数:,总学时:60 其中上机课时:20,上机时间:待定,2020/7/2...

weixin_42127748的博客 255
上一篇: 计算机程序的构造与解释作业:练习1.1到1.5
下一篇: 计算机程序的构造与解释作业:练习1.9到1.10
ssjssh
博客等级 码龄15年 12粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值