Here, the game is started by giving the first move to a player.
Let's assume Player $1$ takes the first move. At initial step, his payoff will be the maximum payoff achieved by Player $2$ for all possible child boards as shown by the following statement:
value:=max (value, search (C, MIN))
Similarly, Player $2$ will get the minimum payoff achieved by Player $1$ for all the possible child boards.
The problem with the above algorithm is that the same path in the tree will be evaluated repeatedly for different parent node (here node is the board). The amount of search can be significantly reduced if the output of each recursive call is saved and possibly reused if required again, instead of doing a recursive call for each child board.