gpt4 book ai didi

if-statement - SICP lisp 'if' 条件表达式解释

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

我正在研究 SICP,并且已经了解了关于平方根代码的部分。我知道“if”语句后面只能跟单个表达式。但是,在代码中,

(define (sqrt-iter guess x)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x)
x)))

当“猜测”和“x”已被陈述为“如果”的结果表达式时,我不明白第 3、4 和 5 行如何有效。

最佳答案

一些 Scheme 解释器中,if 特殊形式可以在条件之后跟一个或两个表达式,在其他情况下(例如:Racket)必须遵循条件通过恰好两个表达式。但是在您的代码中,条件后有两个表达式!这更像是一个缩进问题,请参阅:

(define (sqrt-iter guess x)
(if (good-enough? guess x) ; condition
guess ; first expression (consequent)
(sqrt-iter (improve guess x) ; second expression (alternative)
x)))

澄清一下:guessx 不是条件的结果和替代,它们是good 的参数-enough? 表达式 (good-enough? guess x) 中的过程,这只是条件部分。请记住,if 表达式的一般结构如下所示:

(if <condition>
<consequent>
<alternative>)

其中每个部分都是一个表达式。更多详情请参阅 documentation .

关于if-statement - SICP lisp 'if' 条件表达式解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341477/

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