Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

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

Понятие рекурсииРекурсия – такой способ организации алгоритмического процесса, при котором функция в процессе выполнения входящих в ее состав операторов обращается сама к себе непосредственно либо через другие функции.Рекурсивные функции (лат. recursio – возвращение) – в вычислительной
Программирование  на языке Си Рекурсия Понятие рекурсииРекурсия – такой способ организации алгоритмического процесса, при котором функция в Виды рекурсииЛюбую рекурсивную функцию можно сделать итеративной, т.е. с использованием циклов. Рекурсивный Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.Число рекурсивных вызовов в Задача о вычислении факториалаРекурсия применятся при обработке так называемых рекуррентных формул. Одной Задача о вычислении факториалаОднако мы можем выразить факториал рекурсивно, через другие факториалы.Чтобы Первый вариант:Второй вариант:int factorial (int i){if (i==0)	return 1;else {i=i*factorial(i-1);return i; }}Пример использования Пример 2: Написать программу возведения значения в целочисленную степень - Хn. Это Пример 3: В следующей программе происходит вывод на экран целых чисел 10, Преимущества и недостатки рекурсииИспользование рекурсии может сократить размер исходного кода программы и
Слайды презентации

Слайд 2 Понятие рекурсии
Рекурсия – такой способ организации алгоритмического процесса,

Понятие рекурсииРекурсия – такой способ организации алгоритмического процесса, при котором функция

при котором функция в процессе выполнения входящих в ее

состав операторов обращается сама к себе непосредственно либо через другие функции.

Рекурсивные функции (лат. recursio – возвращение) – в вычислительной математике – функции, определенные на множестве натуральных чисел и принимающие значения того же множества.

Рекурсивный алгоритм – это алгоритм, решающий задачу путем решения одного или нескольких более узких вариантов той же задачи.

Рекурсивные функции - такие функции, которые могут вызывать сами себя. При этом каждый раз под каждый вызов создается совершенно новый набор локальных переменных, отличный от набора вызывающей функции.


Слайд 3 Виды рекурсии
Любую рекурсивную функцию можно сделать итеративной, т.е.

Виды рекурсииЛюбую рекурсивную функцию можно сделать итеративной, т.е. с использованием циклов.

с использованием циклов.

Рекурсивный подход обычно предпочитается итеративному подходу

в случаях:
когда рекурсия более естественно отражает математическую сторону задачи и приводит к программе, которая проще для понимания и отладки;
если итеративное решение может не быть очевидным;
когда используемые данные определены рекурсивно.

Рекурсия может быть
прямой или косвенной.

Если функция
вызывает саму себя, то речь идет о прямой рекурсии.


Если же функция вызывает другую функция, которая затем вызывает исходную функцию, тогда имеет место быть косвенная рекурсия.


Слайд 4 Количество вложенных вызовов функции или процедуры называется глубиной

Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.Число рекурсивных вызовов

рекурсии.


Число рекурсивных вызовов в каждый конкретный момент времени, называется

текущим уровнем рекурсии.

Параметры рекурсии


Слайд 5 Задача о вычислении факториала
Рекурсия применятся при обработке так

Задача о вычислении факториалаРекурсия применятся при обработке так называемых рекуррентных формул.

называемых рекуррентных формул. Одной из таких формул является,, формула

вычисления факториала числа: , где 0!=1.

Чтобы вычислить факториал на шаге n, надо воспользоваться факториалом, вычисленным на шаге n-1.

Факториал n - это произведение всех натуральных чисел до n включительно.


Например:

5! = 5 * 4 * 3 * 2 * 1 = 120
4! = 4 * 3 * 2 * 1 = 24
3! = 3 * 2 * 1 = 6
2! = 2 * 1 = 2
1! = 1
0! = 1


Слайд 6 Задача о вычислении факториала


Однако мы можем выразить факториал

Задача о вычислении факториалаОднако мы можем выразить факториал рекурсивно, через другие

рекурсивно, через другие факториалы.

Чтобы вычислить факториал на шаге n,

надо воспользоваться факториалом, вычисленным на шаге n-1.

5! = 5 * 4!
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1 * 0!
0! = 1


Слайд 7 Первый вариант:





Второй вариант:
int factorial (int i)
{
if (i==0)
return 1;
else

Первый вариант:Второй вариант:int factorial (int i){if (i==0)	return 1;else {i=i*factorial(i-1);return i; }}Пример

{
i=i*factorial(i-1);
return i;
}
}
Пример использования рекурсии
int factorial(int n)
{

return !n ? 1 : n * factorial(n - 1);
}

Слайд 8 Пример 2: Написать программу возведения значения в целочисленную

Пример 2: Написать программу возведения значения в целочисленную степень - Хn.

степень - Хn. Это эквивалентно х, умноженному на себя

n раз. Функция работает с отрицательными степенями, т.е. Х-n эквивалентно

double power (double x, int n);
int main (void)
{
double x=2.0;
double result=0.0;
for (int i=-3; i<=3; i++)
{ result=power(x,i);
printf("%lf в степени %d=%lf",x,i,result);
}
}
double power (double x, int n)
{ if (n<0)
{ x=1.0/x;
n=-n;
}
if (n>0) return x*power (x,n-1);
else retutn 1.0;
}

Пример использования рекурсии



Слайд 10 Пример 3: В следующей программе происходит вывод на

Пример 3: В следующей программе происходит вывод на экран целых чисел

экран целых чисел 10, 9, …, 1 с использованием

рекурсивной функции Print(). Данная функция в качестве аргумента получает число, которое необходимо вывести на экран. После того как число напечатано, данная функция вызывает саму себя с аргументом, на единицу меньшим только что напечатанного. Функции Print() завершается в случае, когда она в качестве параметра получает число, меньшее единицы.

#include
void Print(int);
void Print(int i)
{
if (i >= 1)
{ printf("%d\n", i);
Print(i - 1);
}
}
int main( )
{
Print(10);
return 0;
}

Пример использования рекурсии



  • Имя файла: programmirovanie-na-yazyke-si-rekursiya.pptx
  • Количество просмотров: 109
  • Количество скачиваний: 0