将计算结果作为参数添加到 Scheme 中

Adding the result of computation as an argument in Scheme

我尝试在 Scheme 中编写一个计算数字平方的程序,但它给了我一个错误,我给了 abs 过程两个参数而不是一个。这是我在 Scheme 中的第一个程序,不知道该怎么做。我尝试更改括号的位置,但没有用。

(define (square X)
    (try 1 X))


(define (try guess X)
    (if (good-enaugh? guess X)
        guess
        ((try improve guess X) X)))


(define (good-enaugh? guess X)
    (< (abs(- (* guess guess) X)) 0.0001))


(define (improve guess X)
    (/(+ (/ X guess) guess) 2))

你快到了。问题是 try 中条件语句的第二个分支有太多一对括号。

(define (try guess X)
    (if (good-enaugh? guess X)
        guess
        ((try improve guess X) X)))

应该变成:

(define (try guess X)
    (if (good-enaugh? guess X)
        guess
        (try (improve guess X) X)))

您调用了函数 try。第一个参数是 (improve guess X) 的结果,第二个参数是数字 X。请注意,我还更改了对 improve 的调用周围的括号。您编写它的方式是调用函数 try 并将函数 improve、第二个参数 guess 和第三个参数 X.

作为第一个参数

完整来源

下面列出了完整的来源。

(define (square X)
    (try 1 X))


(define (try guess X)
    (if (good-enaugh? guess X)
        guess
        (try (improve guess X) X)))


(define (good-enaugh? guess X)
    (< (abs(- (* guess guess) X)) 0.0001))


(define (improve guess X)
    (/(+ (/ X guess) guess) 2))


> (square 13)
3,....

Link to repl.it