Рекурсивные алгоритмы *
Рекурсия– это одна из фундаментальных концепций в математике и программировании. Это одна из форм мышления, это мощное средство, позволяющее строить элегантные и выразительные алгоритмы. Объект называется рекурсивным, если он содержит сам себя или определен с помощью самого себя.
Если процедура рсодержит явное обращение к самой себе, то она называется явно рекурсивной. Если процедурарсодержит обращение к некоторой процедуреq, которая в свою очередь содержит прямое или косвенное обращение кр, торназывается косвенно рекурсивной.
Рекурсивная программа не может вызывать себя бесконечно, иначе она никогда не остановится, таким образом в программе (функции) должен присутствовать еще один важный элемент – так называемое терминальное условие, то есть условие при котором программа прекращает рекурсивный процесс.
Рекуррентность– это рекурсивное определение функции. Классический пример такого рода функций – факториал. Напомним, факториал нуля равен 1, а факториал натурального числа N определяется как произведение натуральных чисел от единицы до N, что выражается рекуррентной формулой: N!=N (N-1)!, для N>=1 и 0! = 1. То есть для определения факториала одного числа требуется знать или вычислить факториал другого, уменьшенного на единицу. А это, в свою очередь, может потребовать определения факториала ещё меньшего числа. И так далее, до единицы. Этому напрямую соответствует нижеследующая рекурсивная функция:
Function factorial(N As Integer) As Long
If N=0 Then factorial=1 Else factorial=N*factorial(N-1)
End Function
Многие алгоритмы можно легко реализовать с помощью рекурсивных программ, и многие разработчики алгоритмов предпочитают выражать алгоритмы рекурсивно. Но делать это нужно крайне осторожно. Например, вызов factorial(-1) приведет к бесконечному рекурсивному циклу (аварийная остановка, конечно, будет, связанная с переполнением стека или выходом значения аргумента за пределы диапазона). Поэтому перед вызовом данной функции нужно делать проверку условия неотрицательности аргумента.
Стоит также отметить, что не все языки допускают использование рекурсий. В таких случаях можно обойтись использованием обычных циклов. Например, ту же функцию факториал реализовать без использования рекурсии:
Function factorial(N As Integer) As Long
factorial=1
For Счётчик=1 To N
factorial=factorial*Счётчик
Next
End Function
-
Содержание
- Информатика
- Режим доступа к электронному аналогу печатного издания: http://www.Libdb.Sssu.Ru
- Содержание
- Предисловие
- Основные понятия информатики
- Понятие информации
- Свойства информации
- Понятие количества информации
- Предмет и задачи информатики
- Информационное общество
- Вопросы и тестовые задания для самоконтроля
- Системы счисления и представление информации в эвм
- Представление (кодирование) данных
- Понятие об основных системах счисления
- Перевод чисел из одной системы счисления в другую
- Представление чисел в различных системах счисления
- Двоичная арифметика
- Арифметические действия над двоичными числами
- Представление чисел в эвм
- Примеры представления целых чисел в шестнадцатиразрядных двоичных кодах
- Представление десятичных чисел в четырёхразрядном коде Грея
- Кодирование информации в эвм
- Базовая таблица кодировки ascii
- Вопросы и тестовые задания для самоконтроля
- Логические основы построения эвм
- Основы алгебры логики
- Операции сравнения
- Примеры операторов сравнения в разных языках программирования
- Логические операции
- Основные логические операторы
- Результаты, возвращаемые логическими операциями
- Основы элементной базы эвм
- Условные обозначения и диаграммы работы логических элементов
- Rs-триггер
- Элементы теории множеств
- Элементы теории графов
- Типы вершин блок-схем алгоритмов
- Вопросы и тестовые задания для самоконтроля
- Технические средства реализации информационных процессов
- История развития эвм
- Классификация эвм
- Архитектура эвм
- Состав персонального компьютера
- Внешние устройства
- Вопросы и тестовые задания для самоконтроля
- Системное программное обеспечение эвм
- Базовые понятия ос
- Классификация операционных систем
- Файловая структура эвм
- Примеры общепринятых расширений для популярных типов файлов
- Файловые системы Microsoft Windows
- Драйверы устройств
- Служебные программы
- Обзор операционных систем unix и Linux
- Обзор операционных систем Windows
- Вопросы и тестовые задания для самоконтроля
- Прикладное и инструментальное программное обеспечение
- Прикладное программное обеспечение общего назначения
- Прикладное программное обеспечение специального назначения
- Инструментальное по
- Нумерация версий программ
- Правовой статус программ
- Текстовые редакторы и процессоры
- Программы подготовки презентаций
- Вопросы и тестовые задания для самоконтроля
- Электронные таблицы
- Основные понятия электронных таблиц Excel
- Ввод, редактирование и форматирование данных
- Вычисления в таблицах
- Диаграммы
- Вопросы и тестовые задания для самоконтроля
- Модели решения функциональных и вычислительных задач
- Моделирование как метод познания
- Классификация моделей
- Классификация видов моделей
- Компьютерное моделирование
- Информационные модели
- Примеры информационных моделей
- Базы данных
- Искусственный интеллект
- Вопросы и тестовые задания для самоконтроля
- Основы алгоритмизации
- Основные этапы компьютерного решения задач
- Понятие алгоритма и его свойства
- Исполнители алгоритмов
- Способы описания алгоритмов
- Обозначение и функциональное назначение наиболее часто употребляемых символов в схемах данных и программ
- Базовые управляющие структуры алгоритмов (основные алгоритмические конструкции)
- 2) Альтернатива (ветвление);
- 3) Итерация1 (цикл).
- Алгоритмы линейной структуры
- Алгоритмы ветвящейся структуры
- Алгоритмы циклической структуры
- Способы комбинации базовых управляющих структур (основных алгоритмических конструкций)
- Примеры комбинации основных алгоритмических структур
- Вопросы и тестовые задания для самоконтроля
- Основы программирования на языках высокого уровня
- Основные понятия языков программирования
- Примеры использования имён
- Операторы в арифметических и логических выражениях
- Типы данных и операторы описания переменных
- Некоторые базовые типы переменных
- Описание переменных в разных языках
- Синтаксис операторов описания сложных типов переменных
- Основные операторы
- Синтаксис некоторыхоператоров
- Вопросы и тестовые задания для самоконтроля
- Основные операторы языка visual basic for applications
- Оператор присваивания
- Примеры использования оператора присваивания
- Условный операторIf … then
- Оператор выбора варианта*
- Операторы цикла
- Оператор циклаFor … next
- Математические функции
- Краткие сведения о математических функциях в vba и Паскале
- Функции обработки строк*
- Краткие сведения о строковых функциях
- Функции преобразования данных
- Краткие сведения о функциях преобразования данных
- Вопросы и тестовые задания для самоконтроля
- Технологии программирования
- Концепция программирования
- Характеристика трудоёмкости разработки программ
- Структурное и модульное программирование
- Рекурсивные алгоритмы *
- Объектно-ориентированное программирование
- Вопросы и тестовые задания для самоконтроля
- Языки и системы программирования
- Уровни языков программирования
- Системы программирования
- Классификация языков программирования
- Процедурные языки программирования
- Объектно-ориентированные языки
- Декларативные языки
- Языки программирования для баз данных и компьютерных сетей
- Языки моделирования *
- Вопросы и тестовые задания для самоконтроля
- Основные понятия компьютерной графики
- Виды компьютерной графики
- Графические форматы
- Цветовые модели *
- Программные средства создания растровых изображений
- Программы векторной графики
- Программные средства обработки трехмерной графики
- Вопросы и тестовые задания для самоконтроля
- Основные понятия баз данных
- Задачи, решаемые с помощью баз данных
- Классификация бд
- Реляционная модель данных
- Свойства полей базы данных
- Типы данных
- Безопасность и объекты баз данных
- Проектирование баз данных *
- Вопросы и тестовые задания для самоконтроля
- Средства автоматизации проектных, опытно-конструкторских и научно-исследовательских работ.
- Задачи, решаемые с помощью систем автоматического проектирования
- Программные продукты MathWorks
- Сапр в легкой промышленности
- Вопросы и тестовые задания для самоконтроля
- Основы компьютерных сетей
- Основы передачи данных
- Назначение и классификация сетей
- Сетевая модель osi/iso
- Сетевое оборудование
- Основные стандарты и протоколы
- Т Вопросы и тестовые задания для самоконтроля
- Глобальная сеть интернет
- Подключение к Интернет
- Службы Интернет
- Поиск информации в Интернете
- Наиболее известные и популярные поисковые системы
- Поиск с использованием языка запросов *
- Логические операторы
- Вопросы и тестовые задания для самоконтроля
- Основы информационной безопасности
- Угрозы информационной безопасности
- Методы и средства защиты информации
- Правовые основы информационной безопасности
- Ответственность за преступления в области информационных технологий
- Криптографические механизмы защиты информации
- Компьютерные вирусы и вредоносные программы
- Методы защиты от вирусов
- Вопросы и тестовые задания для самоконтроля
- Библиографический список
- Учебное издание информатика Учебное пособие