🗊 Презентация Программирование на языке С++. Лекция 9. Рекурсия

Нажмите для полного просмотра!
Программирование на языке С++. Лекция 9. Рекурсия, слайд №1 Программирование на языке С++. Лекция 9. Рекурсия, слайд №2 Программирование на языке С++. Лекция 9. Рекурсия, слайд №3 Программирование на языке С++. Лекция 9. Рекурсия, слайд №4 Программирование на языке С++. Лекция 9. Рекурсия, слайд №5 Программирование на языке С++. Лекция 9. Рекурсия, слайд №6 Программирование на языке С++. Лекция 9. Рекурсия, слайд №7 Программирование на языке С++. Лекция 9. Рекурсия, слайд №8 Программирование на языке С++. Лекция 9. Рекурсия, слайд №9 Программирование на языке С++. Лекция 9. Рекурсия, слайд №10 Программирование на языке С++. Лекция 9. Рекурсия, слайд №11 Программирование на языке С++. Лекция 9. Рекурсия, слайд №12 Программирование на языке С++. Лекция 9. Рекурсия, слайд №13 Программирование на языке С++. Лекция 9. Рекурсия, слайд №14 Программирование на языке С++. Лекция 9. Рекурсия, слайд №15 Программирование на языке С++. Лекция 9. Рекурсия, слайд №16 Программирование на языке С++. Лекция 9. Рекурсия, слайд №17

Вы можете ознакомиться и скачать презентацию на тему Программирование на языке С++. Лекция 9. Рекурсия. Доклад-сообщение содержит 17 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Программирование на языке С++ Зариковская Наталья Вячеславовна Лекция 9
Описание слайда:
Программирование на языке С++ Зариковская Наталья Вячеславовна Лекция 9

Слайд 2


Рекурсия в языке C++ В программировании рекурсия — вызов функции (или процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие...
Описание слайда:
Рекурсия в языке C++ В программировании рекурсия — вызов функции (или процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная или косвенная рекурсия). Количество вложенных вызовов функции или процедуры называется глубиной рекурсии. Рекурсивная программа позволяет описать повторяющееся или даже потенциально бесконечное вычисление, причём без явных повторений частей программы и использования циклов. Язык С++, как и большинство языков программирования высокого уровня, поддерживает рекурсивные вызовы. В С++ любая функция, кроме main() может быть рекурсивной.

Слайд 3


Общий вид Прямая рекурсия int function() { … function() … }
Описание слайда:
Общий вид Прямая рекурсия int function() { … function() … }

Слайд 4


Факториал Факториал числа n (n!) – произведение всех натуральных чисел от 1 до n включительно (принято, что 0! = 1). int factorial(int n) { if (n <...
Описание слайда:
Факториал Факториал числа n (n!) – произведение всех натуральных чисел от 1 до n включительно (принято, что 0! = 1). int factorial(int n) { if (n < 2) return 1; return n*factorial(n - 1); }

Слайд 5


Число Фибоначчи Числа Фибоначчи – элементы последовательности, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух...
Описание слайда:
Число Фибоначчи Числа Фибоначчи – элементы последовательности, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел. (0, 1, 1, 2, 3, 5, 8…) int fibonacci(int n) { if (n < 1) return 0; if (n == 1) return 1; return fibonacci(n - 1)*fibonacci(n – 2); }

Слайд 6


QuickSort Другим интересным примером использования рекурсивных функций может служить алгоритм быстрой сортировки (quicksort). Этот алгоритм получил...
Описание слайда:
QuickSort Другим интересным примером использования рекурсивных функций может служить алгоритм быстрой сортировки (quicksort). Этот алгоритм получил широко распространение во многих прикладных программах. Однако эффективность его использования существенным образом зависит от числа элементов сортируемого массива, а также характера распределения этих данных. 1. Выбирается какой-либо элемент (x) (обычно находящийся в середине последовательности). Будем просматривать массив слева до тех пор, пока не обнаружим элемент аi>x, затем будем просматривать массив справа, пока не встретится аj

Слайд 7


Рекурсия в программе – это плохо По крайней мере в большинстве случаев. Достоинства рекурсии: высокая читаемость кода; малое количество кода....
Описание слайда:
Рекурсия в программе – это плохо По крайней мере в большинстве случаев. Достоинства рекурсии: высокая читаемость кода; малое количество кода. Недостатки рекурсии: низкая скорость работы; высокое использование памяти.

Слайд 8


Итеративный факториал int factorial(int n) { if (n < 2) return 1; int result = 1; while(n > 1) { result *= n; n--; } return result; }
Описание слайда:
Итеративный факториал int factorial(int n) { if (n < 2) return 1; int result = 1; while(n > 1) { result *= n; n--; } return result; }

Слайд 9


Рекурсия в языке C++ Примером задачи, где оправдано использование рекурсии, может служить решение задачи о Ханойских башнях. Эта задача формулируется...
Описание слайда:
Рекурсия в языке C++ Примером задачи, где оправдано использование рекурсии, может служить решение задачи о Ханойских башнях. Эта задача формулируется следующим образом: имеется три стержня. На одном из них находятся диски, разных размеров, сужающиеся к верху (пирамида). Требуется перенести эти диски на другой стержень, используя только один, вспомогательный стержень. При этом за один раз можно перенести только один диск, а больший по размеру диск не допустимо ставить на диск меньшего размера Доказательство решения этой задачи основано на использовании индукционного метода, из которого непосредственно следует алгоритм, основанный на использовании рекурсивных функций. Так, для случая одного диска решение, очевидно, он просто перекладывается с исходного стержня на заданный. Для случая из двух дисков сначала верхний диск перекладывается на вспомогательный стержень, а затем нижний диск с исходного стержня и верхний со вспомогательного стержня перекладываются на заданный. Аналогично, для случая N дисков, сначала N-1 дисков при соблюдении правил перестановки перемещаются на вспомогательный стержень, а затем на заданный стержень переносится нижний диск (он нашёл своё место). Далее, учитывая, что последний диск, перемещённый на заданный стержень, никак не мешает, поскольку он больше всех остальных, задача решается аналогично. Исключение состоит в том, что N-1 диск, из оставшихся, перемещаются на вспомогательный, который ранее был исходным, используя в качестве промежуточного заданный, а последний из оставшихся снова перемещается на заданный стержень. Таким образом, после двух циклов перестановок, мы приходим к исходной ситуации использования стержней, но количество дисков, которых необходимо переставить меньше на два диска и т.д.. Процесс рекурсии останавливается, когда остаётся только один диск, который перемещается на заданный. Доказано, что для n дисков минимальное число необходимых перемещений равно 2^n-1.

Слайд 10


Рекурсия в языке C++ Рекурсивная функция должна всегда определять условие окончания, иначе рекурсия станет бесконечной. #include int k; void Hanoy1...
Описание слайда:
Рекурсия в языке C++ Рекурсивная функция должна всегда определять условие окончания, иначе рекурсия станет бесконечной. #include int k; void Hanoy1 (char a,char b,char c,int n ); void main() {cout>k; } void Hanoy1 (char a,char b,char c,int n ) {int v; v=n; if (n==1) cout

Слайд 11


Рекурсия в языке C++
Описание слайда:
Рекурсия в языке C++

Слайд 12


Рекурсия в языке C++ Технология использования рекурсивных функций весьма проста. Однако при использовании рекурсивных функций необходимо особое...
Описание слайда:
Рекурсия в языке C++ Технология использования рекурсивных функций весьма проста. Однако при использовании рекурсивных функций необходимо особое внимание уделять анализу целесообразности их применения. Например, рассмотрим пример решения задачи расчёта долга клиента банка, который взял некоторую сумму под ежемесячный процент от текущей суммы долга. Эта задача может быть решена как с использованием рекурсивных функций, так и с помощью итерационных алгоритмов. При использовании рекурсивных функций для решения этой задачи необходимо: определить условие окончания - начальная сумма кредита (if (n==0) kuz=b;); определить в выражение расчёта долга относительно текущего (kuz=kuzy(n-1)*(1+kk);). После чего алгоритм и программа решения задачи, приведенная ниже, становится весьма прозрачной

Слайд 13


Рекурсия в языке C++ #include float kk,b; float kuzy (int); void main() { int n ; cout
Описание слайда:
Рекурсия в языке C++ #include float kk,b; float kuzy (int); void main() { int n ; cout

Слайд 14


Рекурсия в языке C++ Эта же программа при использовании рекурсивного алгоритма не менее красива, но значительно эффективнее. #include float kk,b;...
Описание слайда:
Рекурсия в языке C++ Эта же программа при использовании рекурсивного алгоритма не менее красива, но значительно эффективнее. #include float kk,b; void main() { int n ; float kuz; cout

Слайд 15


Рекурсия в языке C++ Незаменимы рекурсивные процедуры при решении интеллектуальных задач, где используются алгоритмы с возвратом. Целесообразно...
Описание слайда:
Рекурсия в языке C++ Незаменимы рекурсивные процедуры при решении интеллектуальных задач, где используются алгоритмы с возвратом. Целесообразно проанализировать приведенный ниже листинг программы решения задачи обхода шахматным конём шахматной доски.

Слайд 16


Рекурсия в языке C++
Описание слайда:
Рекурсия в языке C++

Слайд 17


Программирование на языке С++. Лекция 9. Рекурсия, слайд №17
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию