#lang racket
(define (average x y) (/ (+ x y) 2))
(define (sqrt x)
(fixed-point
(lambda(y)(average (/ x y) y)) //在这里f=(lambda(y) (average (/ x y) y)) 这是一个没有名字的procedure
1))
(define (fixed-point f start) //fixed-pointer以procedure f和value start 为参数
(define tolerance 0.00001)
(define (close-envf? u v)
(< (abs(- u v)) tolerance))
(define (iter old new)
(if (close-envf? old new)
new
(iter new (f new))))
(iter start (f start)))(define (sqrt x)
(fixed-point
(average-damp (lambda(y) (/ x y)))
1))
(define average-damp
(lamda(f)
(lamda(x) (average (f x) x))))
本文介绍了一种使用Scheme语言实现平方根计算的方法。通过定义固定点迭代过程fixed-point及辅助函数average-damp来平滑迭代过程,最终实现了高精度的平方根计算函数sqrt。文章展示了如何利用递归和过程抽象完成数学算法的程序实现。

被折叠的 条评论
为什么被折叠?



