Как создать стек для рекурсивной функции? - VB
Формулировка задачи:
Здесь речь идёт вот о чем. Требуется сделать стек,
размер которого будет на порядок больше того, что
может дать VB6. И основная проблема даже не в том
как управлять этим стеком, а в том, что в него
заносить, какие данные? Буду вам очень благодарен
если вы приведёте маленький пример. Например
надо вычислить 7!. И прокомментировать код.
Все остальное я сделаю сам. Мне важно понять
принцип. Принцип вызова рекурсивной функции и
сохранение в стеке необходимых данных.
В качестве стека я собираюсь использовать
файл прямого (произвольного) доступа
нужного мне размера.
Решение задачи: «Как создать стек для рекурсивной функции?»
textual
Листинг программы
- Global StackAddr
- EnableASM
- Macro GetStackAddr(Var)
- CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
- MOV Var, esp ; x86.
- CompilerElse
- MOV Var, rsp ; x64.
- CompilerEndIf
- EndMacro
- Procedure Tst(i)
- If i<10 ; Прервать рекурсию если ее глубина равна 10.
- Tst(i+1)
- ElseIf i=10
- GetStackAddr(i) ; Копирование текущего адреса стека в переменную.
- MessageRequester("", "Было использовано "+Str(StackAddr-i)+" байт стека")
- EndIf
- EndProcedure
- GetStackAddr(StackAddr) ; Копирование текущего адреса стека в переменную.
- Tst(0)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д