public void Move(int numberOfHanoi, Tower destStack, Tower bufferStack) { if (numberOfHanoi > 0) { //move F(n-1) meaning grab n-1 items to the buffer and move the lagest(the one left) to destination, then move F(n-1) to destination Move(numberOfHanoi - 1, bufferStack, destStack); MoveTopTo(destStack); bufferStack.Move(numberOfHanoi - 1, destStack, this); } }
public void MoveTopTo(Tower destStack) { var value = _disks.Pop(); destStack.Add(value); }