Решение задач с использованием рекурсии - QBasic
Формулировка задачи:
Когда я обратился к поисковой системе, то я не нашёл
ни одного упоминания о рекурсии. Испытав шок, я
решил создать эту тему на QBasic. (В паскале о рекурсии
говорят на каждом углу). Приведу нестандартный пример
рекурсии:
Посадил дед репку. И выросла она большая-пребольшая.
(Далее вызывается рекурсивная процедура)
Тянет дед репку, потянет, вытащить не может.
(Условием выхода из этой процедуры будет событие
при котором репка будет вытащена)
Эта процедура вызывает сама себя и на помощь деду
приходит бабка. И тд. После шестого вызова процедуры
на арене появляется мышка. Благодаря которой репку
вытаскивают. Условие окончания процедуры соблюдено
и программа (как и сказка) завершается.
Что надо знать при написании рекурсивных программ.
1. Оператор CLEAR, , 29000
Этот оператор задаёт величину стека. В данном примере
приведена цифра 29000 - это максимальная величина
стека для QBasic v1.0 -1.1. Для QuickBasic стек ещё больше.
2. Функция FRE(-2) ; (PRINT FRE(-2))
Эта функция указывает (в байтах) свободное стековое
пространство.
3. Функция DEF FN... - эта функция не поддерживает
рекурсии.
4. Рекурсию поддерживают
1) FUNCTION - END FUNCTION
2) SUB - END SUB
3) GOSUB - RETURN
Последним правда не слишком удобно пользоваться, но
пару примеров я приведу (именно на GOSUB - RETURN)
Эта программа вычисляет сумму n натуральных чисел
Это программа вычисляет числа Фибоначи
Решение задачи: «Решение задач с использованием рекурсии»
textual
Листинг программы
REM Программа запрашивает ввод чисел REM (0 - конец ввода) REM И выводит эти числа на экран REM в обратном порядке. REM
Объяснение кода листинга программы
- Программа запрашивает ввод чисел (0 - конец ввода).
- Программа выводит эти числа на экран в обратном порядке. Примерный псевдокод:
- Запросить число
- Если число равно 0, то программа заканчивается
- Рекурсивно вызвать процедуру с числом, уменьшенным на 1
- Вывести число на экран
- Перейти к шагу 1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д