これまでの私のコードは次のとおりです。与えられた金額を生み出すすべての組み合わせを再帰的に見つけたいと思います。これはコンボを出力するテスト プログラムですが、予想どおり、エラーが発生しました。
ArrayIndexOutOfBoundsException: 0
二列で。助けてください、わかりません。そして、印刷する代わりにそれらを配列に保存するにはどうすればよいですか?
import java.util.Scanner;
public class CoinChange {
public static void printCombos(int sum, int sumSoFar, int[] coinsSoFar) {
int[] coins = {5, 10, 20, 50};
if (sum == sumSoFar) {
System.out.print(coinsSoFar);
}
else if (sum > sumSoFar) {
for (int i = 0; i < 4; i++) {
sumSoFar = sumSoFar + coins[i];
coinsSoFar[coinsSoFar.length] = coins[i]; // error row
printCombos(sum, sumSoFar, coinsSoFar);
}
}
}
public static void main (String[]args) {
Scanner read = new Scanner(System.in);
int sum = read.nextInt();
int[] empty = {};
printCombos(sum, 0, empty); //error row
}
}