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的上一个值
?