在方案(球拍,R5RS)我怎么能这样调用我的功能

时间:2017-01-21 19:19:29

标签: 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)

返回1.618033988749895。

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

(cont-frac (lambda (x) 1.0) 
           (lambda (x) 1.0) 
           100)

我是R5RS的新手,这样的事情对我来说还不是很清楚。我为什么要这样称呼它?我如何编码我的cont-frac函数来允许这个?不确定这些信息是否有用,但我最终想要使用函数作为参数之一。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你的老师可能希望你能够根据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))))))