Как создать стек для рекурсивной функции? - VB

Узнай цену своей работы

Формулировка задачи:

Здесь речь идёт вот о чем. Требуется сделать стек, размер которого будет на порядок больше того, что может дать VB6. И основная проблема даже не в том как управлять этим стеком, а в том, что в него заносить, какие данные? Буду вам очень благодарен если вы приведёте маленький пример. Например надо вычислить 7!. И прокомментировать код. Все остальное я сделаю сам. Мне важно понять принцип. Принцип вызова рекурсивной функции и сохранение в стеке необходимых данных.
В качестве стека я собираюсь использовать файл прямого (произвольного) доступа нужного мне размера.

Решение задачи: «Как создать стек для рекурсивной функции?»

textual
Листинг программы
  1. Global StackAddr
  2.  
  3. EnableASM
  4.  
  5. Macro GetStackAddr(Var)
  6.   CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
  7.     MOV Var, esp  ; x86.
  8.   CompilerElse
  9.     MOV Var, rsp  ; x64.
  10.   CompilerEndIf
  11. EndMacro
  12.  
  13. Procedure Tst(i)
  14.   If i<10      ; Прервать рекурсию если ее глубина равна 10.
  15.     Tst(i+1)
  16.   ElseIf i=10
  17.     GetStackAddr(i) ; Копирование текущего адреса стека в переменную.
  18.     MessageRequester("", "Было использовано "+Str(StackAddr-i)+" байт стека")
  19.   EndIf
  20. EndProcedure
  21.  
  22.  
  23. GetStackAddr(StackAddr) ; Копирование текущего адреса стека в переменную.
  24. Tst(0)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы