Algorithm recursively tries to set first possible value to first empty cell and recalculates other cells.