Any way to use recursive functions in ST? Workarounds?

Hey people
I just tried to implement quicksort algorithm for a project using ST and after I was done writing the code I got an error message about recursion. Which was intentional in this case, it’s a recursive sorting algorithm.
But reading on “(SEM1030): Recursive dependency found in POU (…)” it says “According to IEC 61131, recursive POU calls are not allowed”. Is my day completely ruined? Is there no way at all to have recursive functions/FBs? Any workarounds? Any way to force it to allow it?
Example code that could benefit from recursion:
QUICK_SORT_ARR_ALM_STATE:

IF start < end THEN
    // pivot := partition FB output
    PARTIT_ARR_ALM_STATE1(
        start := start,
        end := end,
        arr := arr,
        out => pivot
);
    
    // Call itself recursively to both sides of pivot pivot
    QUICK_SORT_ARR_ALM_STATE2(
        arr := arr,
        start := start,
        end := pivot - 1
    );
    QUICK_SORT_ARR_ALM_STATE3(
        arr := arr,
        start := pivot + 1,
        end := end
    );
END_IF 
PARTIT_ARR_ALM_STATE:
pivot := end;
i := start - 1;
j := start;
WHILE j < pivot DO
    // If value is greater, increase j
    IF (arr[j].ACTIVE_CHANGED > arr[pivot].ACTIVE_CHANGED) THEN
        j := j + 1;   
    // If value is less, increase i
    // arr[i] is greater than arr[pivot], so swap arr[i] y arr[j]
    ELSE
        i := i + 1;
        SWAP_ELEM_ARR_ALM_STATE1(arr := arr, first := j, second := i);
    END_IF
END_WHILE;
// The value in arr[i+1] is going to be greater than arr[pivote], swap
CAMB_ELEM_ARR_ALM_STATE2(arr := arr, primerInd := i + 1, segundoInd := j);
// We return i+1, values to the left are less than arr[i+1], values to the right greater
out := i + 1;