私は数字のリスト:[10, 13, 15]
を持っています。私は現在、私は、再帰的な方法で持ってまで追加または28同じ番号を使用する組み合わせを含む、リュージョンを使用してリストからすべての組み合わせを取得する
の目標よりも小さい、リスト内の数字の組み合わせを見つけようとしています:
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);
}
を現在、これは出力: [10, 13],[13, 15],[15]
たが私の再帰的なメソッドが+1であるので、なぜ私はこれらのソリューションを得ているのか理解しています。しかし、[10],[13],[10,10]
などの他のソリューションは含まれていませんし、私はこれを実装する方法を考えていましたが、私の再帰的メソッドで増分を変更する必要がありますか?
は、@ [ダニー](https://stackoverflow.com/users/8747735/danny)[10,10]ない[10,15] –
@BrijRajKishoreについてあなたが確信している[10、10]になります有効な解は20に等しく、これは28を下回って正しいものになります。 – Danny
@ [Danny](https://stackoverflow.com/users/8747735/danny)それは0と負の数の無限再帰になります –