На схеме (ракетка, 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 ответ
Ваш учитель, вероятно, хочет, чтобы вы могли оценить d и k на основе n.
этот вид использования позволяет вам выбирать способ оценки ошибки шага каждый раз, когда вы вызываете 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))))))