나는 숫자 목록을 가지고 있습니다 : [10, 13, 15]
. 현재동일한 번호를 사용하는 조합을 포함하여 재귀를 사용하여 목록에서 모든 조합 가져 오기
public void combinations(ArrayList<Integer>data,int fromIndex, int endIndex)
{
int sum = 0;
int target = 28;
ArrayList<Integer>results = new ArrayList<Integer>();
if(fromIndex == endIndex)
{
return;
}
for(int currentIndex = fromIndex; currentIndex < endIndex; currentIndex++)
{
if(sum + data.get(currentIndex) <= target)
{
results.add(data.get(currentIndex));
sum +=data.get(currentIndex);
}
}
System.out.println(results);
combinations(data, fromIndex + 1, endIndex);
}
이 출력 : 내가 덜 나는 재귀 방법이 현재 28
의 대상보다까지 추가되거나 목록에서 숫자의 조합을 찾기 위해 노력하고 [10, 13],[13, 15],[15]
을하는 올바른지, 왜 재귀 적 방법이 +1인지에 따라 이러한 솔루션을 얻는 지 이해할 수 있습니다. 그러나 [10],[13],[10,10]
등의 다른 솔루션은 포함되어 있지 않으며이 구현 방법에 대해 궁금해하고 있습니다. 재귀 적 방법으로 증분을 변경해야합니까?
는 @ [대니] (https://stackoverflow.com/users/8747735/danny) [10, 10] 없습니다 [10, 15] –
@BrijRajKishore에 대한 확신하는 [10, 10] 일 것 이것은 올바른 해결책으로 20보다 작아서 올바른 해결책을 찾지 못합니다. – Danny
@ [Danny] (https://stackoverflow.com/users/8747735/danny) 그러면 0과 음수에 대한 무한 재귀가됩니다. –