SICP 1.11-1.13

1.11

递归版本

 1 (define (f n) (cond ((< n 3) n)
 2                     (else (+ (f (- n 1))
 3                              (* (f (- n 2)) 2)
 4                              (* (f (- n 3)) 2)))))
 5
 6 迭代版本
 7
 8 (define (f n)
 9   (if (< n 3)
10       3
11       (xf n 1 2 3 3)))
12
13
14 (define (xf n a b c d)
15   (cond ((= n d) (max a b c))
16         (else (cond ((= 0 (remainder d 3)) (xf n (+ (* 3 a)
17                                               (* 2 b)
18                                               c) b c (+ 1 d)))
19               ((= 1 (remainder d 3)) (xf n a (+ (* 3 b)
20                                                 (* 2 c)
21                                                 a) c (+ 1 d)))
22               ((= 2 (remainder d 3)) (xf n a b (+ (* 3 c)
23                                                   (* 2 a)
24                                                   b) (+ 1 d)))))))

1.12

1 (define (pascal h n)
2   (cond ((= h 1) 1)
3         ((= n 1) 1)
4         ((= h n) 1)
5         (else (+ (pascal (- h 1) n)
6                  (pascal (- h 1) (- n 1))))))

1.13
证明题看着都烦...
作为补偿我来实现一下1.12的迭代版本 --------> 失败

经过百度发现了一个公式  ------->   (row col)=row!/(col!⋅(row−col)!)   -----> 有这个公式的话那实现起来很简单,就不演示了...

时间: 2024-10-14 00:46:33

SICP 1.11-1.13的相关文章

多线程-线程一打印1,2,3,4,5线程二打印6,7,8,9,10,线程三打印11,12,13,14,15,...直到45结束

多线程-线程一打印1,2,3,4,5线程二打印6,7,8,9,10,线程三打印11,12,13,14,15,...知道45结束 public class Exam3{ public static void main(String[]args){ MyThread t1=new MyThread("线程一"); MyThread t2=new MyThread("线程二"); MyThread t3=new MyThread("线程三"); t1.

剑指offer19:按照从外向里以顺时针的顺序依次打印出每一个数字,4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

1 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 2 思路和方法 直接定义一个矩形,在矩形的四条边取值,程序大大简化. 3 核心代码 1 class Solution { 2 public: 3 vector<int> printMatrix(vector<

一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

'''一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值''' l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]] def get(seq): for item in seq: if type(item) is list: get(item) else: print(item) get(l) 原文地址:https://www.cnblogs.com/

转载【趣味算术】能被2、3、5、7、9、11、13整除的数的特点

原文地址  http://blog.sina.com.cn/s/blog_76b0cde40100t32r.html 被2整除的数是偶数. 被3整除的数必须各个位数上的数加起来为三的倍数,比如136,1+3+6=10不行,147=1+4+7=12,就可以. 被5整除个位为0或者5. 能被7整除的数的特征  一个数割去末位数字,再从留下来的数中减去所割去数字的2倍,这样,一次次减下去,如果最后的结果是7的倍数(包括0),那么,原来的这个数就一定能被7整除.   这种方法叫“割减法”.此法还可简化为

SICP 1.1-1.5

1.1 1 10 2 12 3 8 4 3 5 6 6 a = 3 7 b = 4 8 19 9 nil 10 4 11 16 12 6 13 16 1.2 1 (/ (+ 5 2 4 3 (- 2 4 (- 3 5 (+ 6 6 (/ 4 5))))) 7 (* 3 8 (- 6 2) 9 (- 2 7)) 1.3 1 10 2 12 3 8 4 3 5 6 6 a = 3 7 b = 4 8 19 9 nil 10 4 11 16 12 6 13 16 1.4... 1.5 1 (defin

SICP 习题 (2.13)解题总结:区间计算误差

SICP 习题 2.13 又像是一道数学证明题,和编程关系不大,不过这不能阻挡我们去完成它. 题目要求我们证明,当误差百分比很小的时候,可以使用一个简单的公式,根据被乘区间的误差去计算乘积的误差. 同时,为了简化问题,题目允许我们只计算所有数为正的情况,因为涉及到负数时,乘积的正负变化比较多样,不容易统一处理. 我看到题目后最直接的反应不是去证明它,而是通过程序去找到这个简单的公式,典型的程序员心理. 要做到这一点比较容易,我们构建一些误差百分比比较小的区间,将他们相乘,然后看看乘积的误差有什么

11.10-11.13 PHP5和PHP7安装

11.10-11.12 安装PHP5 PHP官网www.php.net 当前主流版本为5.6/7.1 大部分企业都是用5比较多 1 cd #cd /usr/local/src/ 2 下载包 #wget  http://cn2.php.net/distributions/php-5.6.30.tar.bz2 3 解压 # tar jxvf php-5.6.30.tar.bz2 4 进入包进行初始化.编译.安装 #cd php-5.6.30 5 配置参数:(这配置参数是万金油,参数对应功能,一般无特

实验11 12 13

实验11  实现功能 源代码: import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel; public class

上周热点回顾(11.7-11.13)

热点随笔: · 100行代码实现了多线程,批量写入,文件分块的日志方法(Sam Xiao)· 毕业七年,谁自迷茫!(浴子风)· 一些关于界面设计的技巧(牧云云)· 上一家公司倒闭,为什么我又来了创业公司?(腾飞(Jesse))· 使用浏览器的计算力,对抗密码破解(EtherDream)· 我所理解的技术人员面试(翁玉礼)· 年纪带来的“尴尬”,还是?(小洋(燕洋天))· 饿了么基于Vue2.0的通用组件开发之路(分享会记录)(WoodK)· 我为NET狂官方面试题-数据库篇答案(毒逆天)· .n

【国软培训】上海站11月1-3软件“实操训练”工作坊会议召开!

11月1日,由 国软培训 主办的首届软件培训"实操训练"工作坊在上海隆重召开! 国软培训具有十年的培训经验,是资深老牌IT培训机构,已先后为我国输送了上万名精英人才.此前国软培训根据会前调查与用户反馈发现,听众普遍对以下稳定测试.互联网安全架构.云存储等议题关注度比较高,他们分别为:  产品转型/创造未来 讲师介绍:高庆春(加籍华人)IBM美国纽约研发中心总工程师 专项训练包括传统企业互联网时代生死穿越.移动互联网背景下产品转型和产品创新--元模式思维成熟度应用.案例训练包括如何&qu