This program is written in BWBasic, the version provided with DOSEMU, the DOS emulator. In this version of BASIC, you use GOSUB to call a procedure, and there are no local variables. So I used arrays to allocate memory for stacks, from where the "local variables" are taken.
From this code you can learn how recursion and functions with dynamic local variables work.