<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def split_recursive( self, depth: int, min_width: int, min_height: int, max_horizontal_ratio: float, max_vertical_ratio: float, seed: Optional[tcod.random.Random] = None, ) -> None: """Divide this partition recursively. Args: depth (int):
 The maximum depth to divide this object recursively. min_width (int):
 The minimum width of any individual partition. min_height (int):
 The minimum height of any individual partition. max_horizontal_ratio (float):
 Prevent creating a horizontal ratio more extreme than this. max_vertical_ratio (float):
 Prevent creating a vertical ratio more extreme than this. seed (Optional[tcod.random.Random]):
 The random number generator to use. """

        cdata = self._as_cdata()
        lib.TCOD_bsp_split_recursive(
            cdata,
            seed or ffi.NULL,
            depth,
            min_width,
            min_height,
            max_horizontal_ratio,
            max_vertical_ratio,
        )
        self._unpack_bsp_tree(cdata)