SICP 1.40 1.41 1.42 1.43 1.44

解:1.40

(define (cubic a b c)
  (lambda (x) (+ (* x x x) (* a x x) (* b x) c)))

1.41

(define (double f)
  (lambda (x) (f (f x))))

(double double) => (double (double f)),则

(double (double double)) => (double (double (double (double f))))

把inc代入f,得(((double (double double)) inc) 5)=21

1.42

(define (compose f g)
  (lambda (x) (f (g x))))

1.43

(define (repeated f n)
  (if (= n 1)
      f
      (compose f (repeated f (- n 1)))))

1.44

(define dx 0.00001)

(define (smooth f)
  (lambda (x) (/ (+ (f (- x dx)) (f x) (f (+ x dx))) 3.0)))

n次平滑的生成函数为((repeated smooth n) f)

时间: 2024-10-11 22:51:20

SICP 1.40 1.41 1.42 1.43 1.44的相关文章

EC读书笔记系列之17:条款41、42、43、44、45、46

条款41 了解隐式接口与编译器多态 记住: ★classes和templates都支持接口和多态 ★对classes而言接口是显式的(explicit),以函数签名为中心.多态则是通过virtual函数发生于运行期 ★对templates而言,接口是隐式的(implicit),奠基于有效表达式.多态则是通过template具现化和函数重载解析发生于编译期 条款42 了解typename的双重意义 记住: ★声明template参数时,前缀关键字class和typename可互换(函数模板或类模板

SICP:2.40 2.41

#lang racket (define (accumulate op initial seq) (if (null? seq) initial (op (car seq) (accumulate op initial (cdr seq)))) );accumulate (define (append lst1 lst2) (if (null? lst1) lst2 (cons (car lst1) (append (cdr lst1) lst2))) );append (define (enu

【SICP练习】37 练习1.42

 练习1.42 这道题让我彻底爱上了lambda. 复合这一概念早在数学中便已经学过了,我们先来根据题目的意思写出能够平方和能够加一这两个过程.可能是因为我看书不认真吧,写了很多次才完成这两个过程. 一开始我都是以(define (inc f)......)来开始的,但是每次都没有返回结果.终于醒悟了,过程嘛,就是像前面第41最下面所讲的一种关联那样,我们是要将一个lambda表达式关联到一个名字上面,这个名字于是就变成了过程名.而且过程本身也根本不需要传入参数,这又不是函数. (defin

SICP 习题 (1.41)解题总结

SICP 习题1.41 看似和周边的题目没有关系,突然叫我们去定义一个叫double的过程,事实上这道题的核心还是高阶函数. 题目要求我们定义一个过程double,它以一个过程作为參数,这个作为參数的过程已经约定是一个单參数过程.double过程须要返回一个过程,所返回的过程将传入的过程应用两次. 举例说.假设我们有个过程叫(扇耳光 贱人).调用这个过程会扇贱人一个耳光. 那么(double 扇耳光)会返回还有一个过程.这个过程没有名字,我们暂且叫他"扇俩耳光"吧,调用(扇俩耳光 贱人

【SICP练习】71 练习2.42

 练习2.42 这道题曾经在C#中写过,但是写出来的代码却没有Lisp中的朴素.用了一大堆的数组和for循环.但是在这里,用car.cdr来构造就行了. 我们按书中给出的步骤来一步一步求解这个问题.首先是棋局,就按书上的示意图,从上往下的来排皇后的位置.诸如此时书中皇后的位置为:'(6 3 1 7 5 8 2 4). 然后就是过程adjoin-position.rest-of-queens是在前k-1列放置k-1个皇后的一种方式,new-row是在第k列放置所考虑的编号.因此这一过程定义为:

qscoj 喵哈哈村 40,41

链接:http://qscoj.cn/problem/41/ 喵哈哈村的七十六 发布时间: 2017年3月14日 20:02   最后更新: 2017年3月14日 20:03   时间限制: 1000ms   内存限制: 128M 描述 为了拯救喵哈哈村,这个世界必须要存在英雄. 一名英雄七十六站了出来! 但是七十六需要一把强大的武器,于是他走进了武器商店. 第$i$把武器需要$b[i]$元,能提供$c[i]$的武力值. 他现在有$a$元,他只能购买一把武器,请问他最多能够增加多少武力值呢? 如

python学习第42、43天 HTML\CSS

前端是什么? HTML HTML简介 HTML文档结构 1 <!DOCTYPE HTML> 2 <html> 3 <head>...</head> 4 <body>...</body> 5 </html> 首先,<!DOCTYPE HTML>是文档声明,必须写在HTML文档的第一行,位于<html>标签之前,表明该文档是HTML5文档. <html></html> 称为根标签

echo -e &quot;\033[41;36m something here \033[0m&quot;

echo -e "\033[41;36m something here \033[0m" 格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 那些ascii code 是对颜色调用的始末. \033[ ; m -- \033[0m 字背景颜色范围:40----49 40

Linux系统目录详解及实用小技巧

下面以Centos 7为例: 启动级别修改 systemctl isolate multi-user.target systemctl isolate runlevel3.target 启动文件在/etc/systemd/system/default.target 想要修改就直接更改文件就行了: ln -sf /lib/systemd/system/[multi-user.target | graphical.target]\ /etc/systemd/system/default.target