我的代码感到不完整和明显错误时遇到了麻烦。对于我的函数(terms-needed x tol)
,我应该找到最小的k
,以使x
和(square (babylonian x k))
之间的差小于tol
(公差)。换句话说,我们应该测量k
函数中(babylonian x k)
的大小才能提供平方根的良好近似值。
截至目前,我收到“应用程序:不是过程;”的错误消息。用我的代码
(define (square x)
(* x x))
(define (first-value-k-or-higher x tol k)
(if (<= (x)
(square (babylonian x k)) tol)
k)
(first-value-k-or-higher x tol (+ k 1))
)
(define (terms-needed x tol)
(first-value-k-or-higher x tol 1))
我们应该使用一个辅助函数(first-value-k-or-higher x tol k)
,如果k
在参数(square (bablyonian x k))
的{{1}}中,则求助函数为tol
,否则调用自身递归地
x
较大。
这是使k
工作所需的功能:
(terms-needed x tol)
这里是全文,提供了有关问题可能出在哪里的完整上下文。
我们现在将测量上述函数中需要多大
(define (babylonian x k) (if (>= x 1) (if (= k 0) (/ x 2) (* (/ 1 2) (+ (expt x (/ 1 2)) (/ x (expt x (/ 1 2)))))) 1) )
才能提供良好的近似值 平方根的您将编写一个SCHEME函数k
,该函数将 求出需要在(terms-needed x tol)
之内的无限和中的项数,即最小的项数tol
,以使k
和x
之间的差小于(square (babylonian x k))
。 备注2。乍看之下,定义tol
的问题似乎有点挑战, 因为就一个较小的问题来说如何表达它一点也不明显。但是你可能 考虑编写辅助函数(terms-needed x tol)
的结果为(first-value-k-or-higher x tol k)
,如果k
位于参数(square (bablyonian x k))
的{{1}}之内,否则递归调用自身tol
较大。