I은 벡터 V를 수정 회전 오른쪽형식화 라켓 오류 벡터 세트
(: rotate-right : (All (A) (Vectorof A) Integer Integer -> Void))
(rotate right v lo hi)
라는 함수를 작성하는 것을 시도하고되도록하는 간격의 요소 [lo..hi-1] 위치 [lo + 1..hi]로 이동되고 인덱스 hi의 요소는 위치 lo로 이동합니다. 예를
를 들어(rotate-right (vector 0 1 2 3 4 5 6 7 8 9))
는이 코드
그러나(: rotate-right : (All (a) (Vectorof a) Integer Integer -> Void))
(define (rotate-right v lo hi)
(local
{(define tmp v)
(: vector-scan : (All (a) (Vectorof a) Integer Integer Integer -> Void))
(define (vector-scan v lo hi c)
(cond
[(= c -1) (vector-set! v 0 (vector-ref v 0))]
[(and (< lo c) (>= hi c))
(vector-scan
(vector-set! v c (vector-ref tmp (- c 1)))
lo hi (- c 1))]
[(= c lo)
(vector-scan
(vector-set! v lo (vector-ref tmp hi))
lo hi (- c 1))]
[else
(vector-scan
(vector-set! v c (vector-ref v c))
lo hi (- c 1))]))}
(vector-scan v lo hi (vector-length v))))
에게 서면으로 작성했습니다
#(0 1 5 2 3 4 6 7 8 9).
는이 날 벡터가 세트로 오류를 입력 할 수 있습니다 생산! 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 감사.