sicp习题试解 (1.37)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

; ======================================================================

;

; Structure and Interpretation of Computer Programs

; (trial answer to excercises)

;

; 计算机程序的构造和解释(习题试解)

;

; created: code17 03/06/05

; modified:

; (保持内容完整不变前提下,可以任意转载)

; ======================================================================

;; SICP No.1.37

;; 递归版本

(define (cont-frac-r n d k)

(define (frac i)

(if (= i (+ k 1))

0

(/ (n i) (+ (d i) (frac (+ i 1))))))

(frac 1))

;; 迭代版本

(define (cont-frac-i n d k)

(define (frac i v)

(if (= i 0)

v

(frac (- i 1) (/ (n i) (+ (d i) v)))))

(frac k 0))

;; 另外,cont-frac也可使用前面章节所定义的accumulate过程来定义

;; Test-it;;

;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.

;; > (define cont-frac cont-frac-i)

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 1)

;; 1.0

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 2)

;; 0.5

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 3)

;; 0.6666666666666666

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 4)

;; 0.6000000000000001

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 5)

;; 0.625

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 6)

;; 0.6153846153846154

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 7)

;; 0.6190476190476191

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 8)

;; 0.6176470588235294

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 9)

;; 0.6181818181818182

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 10)

;; 0.6179775280898876

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 11)

;; 0.6180555555555556

;; > (cont-frac (lambda (x) 1.0) (lambda (x) 1.0) 12)

;; 0.6180257510729613

;; >

;;

;; 由运行结果可知,当k>=11时,可以达到小数点后4位的精度。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航