2010-12-01 6 views
1

숙제는 매개 변수로 정수 arraylist를받는 재귀 정적 메서드를 만드는 것입니다. 값이 0 인 요소가 있고 값을 5로 바꾸려면 1의 값을 가진 요소가 제거되고 값이 2 인 요소는 끝으로 이동한다고 가정 해보십시오. 나머지는 그대로 유지됩니다.재귀, Arraylist

재귀를 사용하지 않고이를 수행하는 방법을 생각할 수 있지만 재귀를 사용하여이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

답변

2

기본 케이스는 길이가 1 인 목록으로, 다루기가 쉽습니다.

마지막 1 개의 요소가 이미 처리되었음을 알고있는 길이가 2 인 목록은 처리하기가 약간 더 어렵습니다.

마지막 N-1 요소가 처리 된 길이가 N 인 목록을 관리 할 수 ​​있어야합니다.

그래서 당신이 할 수있는 일은 목록을 가져 와서 첫 번째 요소를 빼고 다음 단계의 재귀 수준으로 전달한 다음 처리 된 하위 목록을 다시 가져올 때 해당 첫 번째 요소를 처리하는 것입니다.

@Steven Schlansker가 맞습니다.하지만 이것은 실제로 재귀 친화적 인 작업이 아닙니다.

3

이것은 전혀 재귀가되지 않는 문제가 아닙니다. 만약 그런 식으로하는 것이 절실하다면, "재귀 적"사례를 인위적으로 (앞에서 요소를 잘라내서) 인위적으로 만들고 빈 목록의 "기본"케이스를 사용하는 방법으로 List.subList을 사용하는 방법을 살펴보십시오.

+0

마지막으로 정렬을 적용하는 것을 잊지 마십시오. 모든 것을 시작하기 전에 할 수 있지만 결국 적은 요소가 있기 때문에 결국에는 시간을 절약 할 수 있습니다. –

+0

"숙제 **는 재귀 적 정적 방법을 만드는 것입니다." 나에게 재귀가 여기에 필요한 것처럼 보입니다. –

+0

@Andreas_D : 당신이 그것에 대해 불평 할 수 없다는 뜻은 아닙니다! –