将计算结果作为参数添加到Scheme中
我试图做一个程序来计算Scheme中一个数字的平方,但它给了我一个错误,我给了abs过程两个参数,而不是一个参数。这是我在Scheme中的第一个程序,我不知道怎么做。我试着改变支架的位置,但不起作用将计算结果作为参数添加到Scheme中,scheme,syntax-error,square-root,Scheme,Syntax Error,Square Root,我试图做一个程序来计算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 (
(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))
(定义(正方形X)
(试一试)
(定义(尝试猜测X)
(如果(好的答案?猜X)
猜测
((尝试改进猜测X)X)))
(定义(好的用法?猜测X)
(<(绝对绝对值(((*猜测)X))0.0001))
(定义(改进猜测X)
(/(+(/X猜测)猜测)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
。第一个参数是(改进猜测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,....
(定义(正方形X)
(试一试)
(定义(尝试猜测X)
(如果(好的答案?猜X)
猜测
(尝试(改进猜测X)X)))
(定义(好的用法?猜测X)
(<(绝对绝对值(((*猜测)X))0.0001))
(定义(改进猜测X)
(/(+(/X猜测)猜测)2)
>(第13广场)
3.
现在,它给我的错误是“错误:执行:未绑定符号:“足够好?”[square,try]”。我用[link](repl.it)做翻译。哦,对了,我把名字改成了正确的英文拼写。我将修改。我添加了更改,它告诉我abs有两个参数,而不是一个。我做了这个(<(abs(abs(*abs(guess)guess))X))0.001)作为解决办法,然后它告诉我“1不是函数”。你用的是什么方言?R5R?R6RS?我已经添加了一个到repl.it实例的链接,该实例包含此代码。它很好用。