Как создать стек для рекурсивной функции? - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д