2017-01-21 4 views
0

내가 연속 부분 (지금의 황금 비율)을 계산하고이 내 코드입니다 :내가 좋아하는 내 함수를 호출 할 수있는 방법 (라켓, 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 함수를 어떻게 코딩합니까? 이 정보가 도움이되는지 아닌지는 잘 모르겠지만 결국 매개 변수 중 하나로서 함수를 사용하려고합니다.

미리 감사드립니다.

+0

나는 그들이 이렇게 싶어 이유를 알기 개미는 람다는 상수로 평가하고 주어진. 그들은 당신에게 고차원 함수를 가르치려는 시도일지도 모릅니다. 그냥 함수를 사용하기 전에 각각의 주위에 괄호를 감싸서 함수 안에'n'과'd'를 호출하면됩니다. – Carcigenicate

+0

한 가지 주장은 무엇인가? 'k'? 'd '의 이전 값? – Sylwester

답변

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))))))