private List <Banknote> GetMoney(int amount, Banknote root, ref List <Banknote> banknotes) { if (root == null || amount == 0) { return(banknotes); } if (root.Amount > amount || root.Count == 0) { return(GetMoney(amount, root.Next, ref banknotes)); } var money = root.TakeMoney(); if (banknotes.Any(x => x.Amount == money.Amount)) { banknotes.FirstOrDefault(x => x.Amount == money.Amount).AddMoney(money); } else { banknotes.Add(new Banknote(money.Amount, 1)); } amount -= money.Amount; return(GetMoney(amount, root, ref banknotes)); }
public void AddNext(Banknote next) { if (Next == null) { Next = next; } else { Next.AddNext(next); } }
public ATM(List <Banknote> banknotes) { foreach (var item in banknotes) { if (banknote == null) { banknote = item; } else { banknote.AddNext(item); } } }