public static MinCoinResult Recursive(int[] coins, int amount) { if (amount == 0) { return(new MinCoinResult(0)); } var minimumCountResult = new MinCoinResult(Int32.MaxValue); foreach (var c in coins) { if (amount >= c) { var currentMinCountResult = Recursive(coins, amount - c); if (currentMinCountResult.minimumCount < minimumCountResult.minimumCount) { minimumCountResult = currentMinCountResult; minimumCountResult.selectedCoins.Add(c); } } } minimumCountResult.minimumCount++; return(minimumCountResult); }
public MinCoinResult(MinCoinResult b) { minimumCount = b.minimumCount; selectedCoins = b.selectedCoins; }