gpt4 book ai didi

lisp - SICP 1.31 : Approximating Pi

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

我正在独自学习 SICP,所以我没有导师可以问这个问题。此代码应该近似于 pi,但始终返回零。

(define (approx-pi acc)
(define (factors a)
(define basic-num
(if (= (mod a 2) 0)
(/ a 2)
(/ (- a 1) 2)))
(if (= (mod basic-num 2) 0)
basic-num
(/ 1 basic-num)))
(* 4 (product factors 5 (* 2 acc))))

以下是此代码中引用的模组和产品程序。这些似乎不是问题,但我会把它们包括在内以防万一。

(define (product func lo hi)
(define (product-iter i result)
(if (> i hi)
result
(product-iter (+ 1 i) (* result (func i)))))
(product-iter 1 1))

(define (mod a b)
(if (< (- a b) 0)
a
(mod (- a b) b)))

整个事情是公式的实现:

圆周率/4 = (2 * 4 * 4 * 6 ...)/(3 * 3 * 5 * 5 ... )

我的错误显然是非常愚蠢的,但我是 Scheme 的新手,所以我找不到它。如果有人有任何文体提示,我也将非常感激。谢谢!

最佳答案

您的产品功能存在细微缺陷:

(product + 4 5)

当正确答案为 20 时返回 120。原因是

(product-iter 1 1) should be (product-iter lo 1)

关于lisp - SICP 1.31 : Approximating Pi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695351/

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