now I need to think of what it means in the program.
You can't pass arrays to a sub. The only thing that can be passed to a sub is a list of scalars. The solution is to pass references to arrays, references being scalars.
In thinking about this I believe what is happening is like "nesting".
I didn't look at how recursion is used here, but it's usually used to divide and conquer. Let's take merge sort, for example.
Sorting
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
is done by sorting
+---+---+---+---+---+---+---+---+-------------------------------+
| | | | | | | | | |
+---+---+---+---+---+---+---+---+-------------------------------+
and
+-------------------------------+---+---+---+---+---+---+---+---+
| | | | | | | | | |
+-------------------------------+---+---+---+---+---+---+---+---+
independently then merging the results. How does it sort the two halves? Well by breaking each down into two halves and sorting those. Etc.
|