示例#1
0
        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));
        }
示例#2
0
 public void AddNext(Banknote next)
 {
     if (Next == null)
     {
         Next = next;
     }
     else
     {
         Next.AddNext(next);
     }
 }
示例#3
0
 public ATM(List <Banknote> banknotes)
 {
     foreach (var item in banknotes)
     {
         if (banknote == null)
         {
             banknote = item;
         }
         else
         {
             banknote.AddNext(item);
         }
     }
 }