나는 Clojure에 익숙하다. 그래서 나는 누군가 내가 나쁘게 나에게 설명 할 수 있는지 궁금해하고있다. 나는 익숙해지기 위해서 4Clojure에서 몇 가지 문제를 해결하고 있는데, 그 중 하나는 Clojure에 내장 된 최대 함수을 사용하지 않고 가변 개수의 매개 변수 최대 값을 계산하는 것입니다 (). 내가 빈칸 채우기 위해 생각 해요 : 결과는이를 위해 4가변 개수의 매개 변수 최대 값 계산하기
입니다
(_ 1 8 3 4)
그래서, 나는 가변 인수에 대응하는 기능을 구현하기 위해 노력하고 있습니다. Lisp의 모든 것은 재귀 적이어야하기 때문에 기본 경우는 하나의 요소 만있는 경우입니다.이 경우 max는 요소 자체입니다. 그 밖에, 나는 제 1 및 제 2 요소를 비교하고, 재귀 적으로 적절한 경우에 함수를 호출 :
(fn max-of
; base case, only one element, return the element
([x] x)
; if more than one element...
([x & more]
; ...compare the first element and the second
; if the first element is bigger than the second
; drop the second element, else drop the first
(if (> x (first more)) (max-of (cons x (rest more)))
(max-of more))))
을하지만이 나 있습니다 :
user=> ((fn max-of
#_=> ([x] x)
#_=> ([x & more]
#_=> (if (> x (first more)) (max-of (cons x (rest more)))
#_=> (max-of more))))
#_=> 1 8 3 4)
(8 3 4)
그리고 이것은 나에게 목록을 반환 내가 왜 아무 생각이 없다 그 목록에 내 기능을 호출하는 것과 반대입니다.