首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >牛顿法运行40次吗?

牛顿法运行40次吗?
EN

Stack Overflow用户
提问于 2013-09-21 20:44:53
回答 1查看 83关注 0票数 0

下面是我为牛顿方法编写的代码:

代码语言:javascript
复制
(define (newtons-method f guess n)
(define (newtons-method-h guess k)
 (if(= k n)
    guess
    (let ((next (- guess (/ (f guess) ((der f 0.1) guess)))))
    (newtons-method-h next (+ k 1)))))
(newtons-method-h guess 0))

以及我用牛顿方法寻找数字平方根时编写的代码:

代码语言:javascript
复制
 (define (sqrt-newt n)
 (newtons-method (lambda (x) (- (* x x) n)) 1.0 40))

我在想..。sqrt打电话给牛顿- 40次采访的方法吗?我相信答案是肯定的,但我在这里画了一个空白。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-21 21:09:15

只需在代码中添加一个计数器:

代码语言:javascript
复制
(define counter null) ; define a global variable

(define (newtons-method f guess n)
  (define (newtons-method-h guess k)
    (set! counter (add1 counter)) ; increment it at each call
    (if (= k n)
        guess
        (let ((next (- guess (/ (f guess) ((der f 0.1) guess)))))
          (newtons-method-h next (+ k 1)))))
  (set! counter 0) ; initialize it before starting
  (newtons-method-h guess 0))

(sqrt-newt 2) ; run the procedure
=> 1.4142135623730951
counter ; check the counter's value
=> 41

如您所见,newtons-method-h过程被调用了41次--比您预期的多了一次,因为这个过程最后一次被调用时是(= k n),而那是递归结束的时候。

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

https://stackoverflow.com/questions/18937433

复制
相关文章

相似问题

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