首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LISP SICP视频讲座2a平均阻尼问题

LISP SICP视频讲座2a平均阻尼问题
EN

Stack Overflow用户
提问于 2011-07-11 11:12:29
回答 1查看 855关注 0票数 2

在下面的代码中,我试图理解变量whatami是如何获取其值的。在下面的逻辑中,我看到过程(lambda (y) (/ x y))是我传递给方法average-damp的参数,并且在该方法中表示为变量f。似乎需要执行(/ x y)(average (f whatami) whatami),但我搞不清楚执行的顺序。任何帮助都是非常感谢的。

代码语言:javascript
复制
(define (average x y)
  (/ (+ x y) 2))

(define (fixed-point f start)
  (define tolerance 0.00001)
  (define (close-enuf? u v)
    (< (abs (- u v)) tolerance))
  (define (iter old new)
    (if (close-enuf? old new)
        new
        (iter new (f new))))
  (iter start (f start)))

(define average-damp
  (lambda (f)
    (lambda (whatami) (average (f whatami) whatami))))

; square root with average damping
(define (_sqrt x)
  (fixed-point
   (average-damp (lambda (y) (/ x y)))
   1))

(_sqrt 4.0)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-11 11:39:02

average-damp过程将一个过程作为其参数,并返回一个过程作为其值。当给定一个接受一个参数的过程时,average-damp返回另一个过程,该过程计算将原始函数f应用于其参数之前和之后的值的平均值。它在fixed-point过程中(迭代地)应用返回的函数。

因此,average-damp过程既不执行(/ x y),也不执行(average(f whatami) whatami),它只使用传递给它的函数来创建它返回的新函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6645428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档