gpt4 book ai didi

lisp - SICP 练习 1.37 : My iterative solution got the right answer but got wrong in 1. 38

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:57 26 4
gpt4 key购买 nike

我对 SICP 1.37 的迭代解决方案是

(define (con-frac n d k)
(define (iter i result)
(if (= 1 i)
result
(iter (- i 1) (/ (n i) (+ (d i) result)))))
(iter k (/ (n k) (d k))))

(con-frac (lambda (i) 1.0) (lambda (i) 1.0) 11)

(define (euler-d i)
(if (= 2 (remainder i 3))
(* (/ 2 3) (+ i 1))
1))

(define (e)
(+ 2 (con-frac (lambda (i) 1.0) euler-d 9)))

(e)

它返回:

Welcome to DrRacket, version 5.2.1 [3m].
Language: SICP (PLaneT 1.17); memory limit: 128 MB.
0.6180555555555556
2.39221140472879

应该返回:

Welcome to DrRacket, version 5.2.1 [3m].
Language: SICP (PLaneT 1.17); memory limit: 128 MB.
0.6180555555555556
2.718283582089552

我不知道我的解决方案有什么问题。

最佳答案

您在 iter 中落后一分。

  (define (iter i result)
(if (= 1 i)
result
(iter (- i 1) (/ (n i) (+ (d i) result)))))

(= 1 i) 更改为 (= 0 i

  (define (iter i result)
(if (= 0 i)
result
(iter (- i 1) (/ (n i) (+ (d i) result)))))

使用 phi 的测试没有捕捉到这一点,因为所有分子和分母都相等。

关于lisp - SICP 练习 1.37 : My iterative solution got the right answer but got wrong in 1. 38,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com