将计算结果作为参数添加到 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,....
我尝试在 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,....