Lambda 在scheme(racket,R5RS)中,我如何像这样调用我的函数

Lambda 在scheme(racket,R5RS)中,我如何像这样调用我的函数,lambda,syntax,scheme,racket,r5rs,Lambda,Syntax,Scheme,Racket,R5rs,我正在计算一个连续分数(目前的黄金比例),这是我的代码: (define cont-frac (lambda (n d k) (define res (+ (/ n d) n)) (if (= k 0) res (cont-frac n res (- k 1))))) 我这样称呼它: (cont-frac 1.0 1.0 100) (cont-frac (lambda (x) 1.0) (lambda (x) 1.0

我正在计算一个连续分数(目前的黄金比例),这是我的代码:

(define cont-frac
  (lambda (n d k)
    (define res (+ (/ n d) n))
    (if (= k 0)
        res
        (cont-frac n res (- k 1)))))
我这样称呼它:

(cont-frac 1.0 1.0 100)
(cont-frac (lambda (x) 1.0) 
           (lambda (x) 1.0) 
           100)
返回1.61803398749895

但我的老师要我这样称呼它:

(cont-frac 1.0 1.0 100)
(cont-frac (lambda (x) 1.0) 
           (lambda (x) 1.0) 
           100)
我是R5R新手,像这样的东西我还不太清楚。我为什么要这样称呼它?如何对cont frac函数进行编码以允许此操作?不确定这些信息是否有用,但我最终还是想使用一个函数作为参数之一


提前感谢。

您的老师可能希望您能够根据n来评估d和k。
这种用法允许您选择每次调用cont frac时评估步骤错误的方式。

这可能就是它应该看起来的样子:

(define cont-frac
  (lambda (n d k)
    (define x n) ;; assuming you want to evaluate d and k based on n
    (define res (+ (/ n (d x)) n))
    (if (= (k x) 0)
        res
        (cont-frac n res (lambda (x) (- (k x) 1))))))

我想知道他们为什么要你这么做,因为lambda只是计算常数。他们可能试图教你高阶函数。只需在函数内部调用
n
d
,在尝试使用它们之前先将括号括起来,就像您在任何函数中调用它们一样。假设的一个参数是什么<代码>k?
d的上一个值