gpt4 book ai didi

scheme - 如果事先不了解 Scheme 的底函数和舍入函数,如何完成 SICP 练习 1.45(计算 n 次方根函数)?

转载 作者:行者123 更新时间:2023-12-04 15:12:03 25 4
gpt4 key购买 nike

同时完成 SICP's Exercise 1.45 ,人们很快就会注意到,需要应用 average-damp 过程来求一个数的 n 次方根的次数非常接近 n 的以 2 为底的对数,向下舍入。换句话说,我们使用 (floor (/(log n) (log 2)))。众多online solutions采用这种确切的方法,我能找到的唯一异常(exception)是 a complex and uncommented solution from the Schemewiki .

但是,据我所知,Structure and Interpretation of Computer Programs 直到本练习出现的章节。这就提出了一个问题:我们对读者打算如何完成这个练习一无所知吗?或者如果失败了,是否有任何明显的方法可以做到这一点(即在事先不知道 floor 的情况下舍入 (/(log n) (log 2)))?

最佳答案

我认为您根本不需要了解Scheme 过程floor,因为练习说明明确说明您可能“假设您需要的任何算术运算都可以作为原语使用。”如果您需要 floor,您可以假设它是可用的。

但事实证明,您根本不需要 floor。只需定义repeated,使浮点计数有效下降:

(define (repeated f n)
(if (< n 2)
f
(lambda (x) (f ((repeated f (- n 1)) x)))))

结合本书中的其他定义,您可以定义 nth-root 而无需 floor 过程:

(define (nth-root x n)
(fixed-point ((repeated average-damp
(/ (log n) (log 2)))
(lambda (y) (/ x (expt y (- n 1)))))
1.0))

关于scheme - 如果事先不了解 Scheme 的底函数和舍入函数,如何完成 SICP 练习 1.45(计算 n 次方根函数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65041108/

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