SICP-answers
SICP-answers copied to clipboard
我的 SICP 解题集
大佬的答案: ``` (car (cons 1 2)) (car (lambda (m) (m 1 2))) ; 展开 cons ((lambda (z) (z (lambda (p q) p))) ; 展开 car ,代换 z (lambda (m) (m...
dx/dx 应该是 1
;;; 47-semaphore-using-test-and-set.scm (define (make-semaphore n) (define (acquire) (if (test-and-set! n) (acquire) 'ok)) (define (release) (set! n (+ n 1)) 'ok) (define (dispatch mode) (cond ((eq? mode 'acquire) (acquire)) ((eq? mode...
每个list中的最后一个元素是个pair,并且该pair的cdr是nil
2.5
I'll suggest a corner case to your algorithm: 40, which can't be reduced to the product of 2^a and 3^b.
练习 3.43
huangz同学你问题2的流程出错了。 左边((acc-1 'withdraw) -10)执行之前,acc-1的余额已经被右边改成30了,所以acc-1最后的余额应当是40。 而题目中问题3的结论是正确的……所有情况都列出来比较麻烦,但是实际上很好理解,因为不论如何交叉,每个difference总是被加一次、减一次,应此对总和是没有影响的。
这里的答案指出“整个 or-gate 共调用了三次 inverter ,一次 and-gate ,因此 or-gate 的延迟等于 3 * inverter-delay + and-gate-delay” 但前两个非门是并联关系的,它们的延迟应该不是叠加的,所以我认为or-gate的延迟等于2* inverter-delay + and-gate-delay 同理 联系3.30的计算可能也有问题,半加器S的延迟为max(or, and+inverter)+and, C的延迟为and, 全加器S的延迟与半加器相同,C的延迟为max(or, and+inverter)+2*and+or, 级联加法器的延迟为 n*(全加器C的延迟) 不知道我的理解是否正确,望讨论下
由于没有Scheme本身未提供rand-update过程,程序可能无法运行和验证