На схеме (ракетка, 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))))))
Другие вопросы по тегам