首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

SICP学习札记 1.2.1 线性的递归和迭代

2012-08-29 
SICP学习笔记 1.2.1 线性的递归和迭代? 练习1.9? ? 对于过程? ? (define (+ a b)? ? ? (if ( a 0)? ? ? ?

SICP学习笔记 1.2.1 线性的递归和迭代

? 练习1.9

? ? 对于过程

? ? (define (+ a b)

? ? ? (if (= a 0)

? ? ? ? b

? ? ? ? (inc (+ (dec a) b))))

? ? 计算(+ 4 5)时的替换过程为

? ? -->(+ 4 5)?

? ? -->(if (= 4 0) 5 (inc (+ (dec 4) 5)))

? ? -->(inc (+ 3 5))

? ??-->(inc (if (= 3 0) 5 (inc (+ (dec 3) 5))))

? ??-->(inc (inc (+ 2 5)))

? ??-->(inc (inc (if (= 2 0) 5 (inc (+ (dec 2) 5)))))

? ??-->(inc (inc (inc (+ 1 5))))

? ??-->(inc (inc (inc (if (= 1 0) 5 (inc (+ (dec 1) 5))))))

? ??-->(inc (inc (inc (inc (+ 0 5)))))

? ??-->(inc (inc (inc (inc (if (= 0 0) 5 (inc (+ (dec 0) 5)))))))

? ??-->(inc (inc (inc (inc 5))))

? ??-->(inc (inc (inc 6)))

? ??-->(inc (inc 7))

? ??-->(inc 8)

? ??-->9

? ? 为线性递归;

? ??对于过程

? ??(define (+ a b)

??? ??(if (= a 0)

? ? ??? ??b

? ? ??? ??(+ (dec a) (inc b))))

? ??计算(+ 4 5)时的替换过程为

? ??-->(+ 4 5)

? ??-->(if (= 4 0) 5 (+ (dec 4) (inc 5)))

? ??-->(+ 3 6)

? ??-->(if (= 3 0) 6 (+ (dec 3) (inc 6)))

? ??-->(+ 2 7)

? ??-->(if (= 2 0) 7 (+ (dec 2) (inc 7))) ?

? ??-->(+ 1 8)

? ??-->(if (= 1 0) 8 (+ (dec 1) (inc 8)))?

? ??-->(+ 0 9)

? ??-->(if (= 0 0) 9 (+ (dec 0) (inc 9)))

? ??-->9 ? ? ? ??

? ??为线性迭代.

?

? 练习1.10

?

? ? (A 1 10)-->(A 0 (A 1 9))

? ? ? ? -->(* 2 (A 1 9))

? ? ? ? -->(* 2 (A 0 (A 1 8)))

? ? ? ? -->(* 2 (* 2 (A 1 7)))

? ? ? ? -->......

? ? ? ? -->2^10

? ? (A 2 4) -->(A 1 (A 2 3))

? ? ? ? -->(A 1 (A 1 (A 2 2)))

? ? ? ? -->(A 1 (A 1 (A 1 (A 1 (A 2 1)))))

? ? ? ? -->(A 1 (A 1 (A 1 (A 1 2))))

? ? ? ? -->(A 1 (A 1 (A 1 2^2)))

? ? ? ? -->(A 1 (A 1 2^4))

? ? ? ? -->(A 1 2^8)

? ? ? ? -->2^16

? ? (A 3 3) -->(A 2 (A 3 2))

? ? ? ? -->(A 2 (A 2 (A 3 1)))

? ? ? ? -->(A 2 (A 2 2))

? ? ? ? -->(A 2 2^2)

? ? ? ? -->2^16

?

? ? (A 0 n) -->2n

? ? (A 1 n) -->2^n

? ? (A 2 n) -->2^(2^n)

热点排行