Скачать презентацию Программирование на языке Паскаль Рекурсия 1 Рекурсивные Скачать презентацию Программирование на языке Паскаль Рекурсия 1 Рекурсивные

Рекурсия 1.pptx

  • Количество слайдов: 7

Программирование на языке Паскаль Рекурсия 1 Программирование на языке Паскаль Рекурсия 1

Рекурсивные объекты Примеры: Рисунок с рекурсией: Сказка о попе и собаке: У попа была Рекурсивные объекты Примеры: Рисунок с рекурсией: Сказка о попе и собаке: У попа была собака, он ее любил. Она съела кусок мяса, он ее убил. В ямку закопал, надпись написал: Сказка о попе и собаке Факториал: если Рекурсивный объект – это объект, определяемый через один 2 или несколько таких же объектов.

Дерево Пифагора из N уровней – это ствол и отходящие от него симметрично два Дерево Пифагора из N уровней – это ствол и отходящие от него симметрично два дерева Пифагора из N-1 уровней, такие что длина их стволов в 2 раза меньше и угол между ними равен 90 o. 6 уровней: ? Как доказать, что это рекурсивная фигура? 3

Дерево Пифагора Особенности: • когда остановиться? когда число оставшихся уровней станет равно нулю! • Дерево Пифагора Особенности: • когда остановиться? когда число оставшихся уровней станет равно нулю! • деревья имеют различный наклон x 1 = x 0 + L·cos(α) α+45 o α-45 o (x 1, y 1) наклон «дочерних» деревьев L α (x 0, y 0) y 1 = y 0 – L·sin(α) α + π/4 α – π/4 4

Процедура угол α длина ствола procedure Pifagor(x 0, y 0, a, L: real; N: Процедура угол α длина ствола procedure Pifagor(x 0, y 0, a, L: real; N: integer); const k = 0. 6; { изменение длины } var x 1, y 1: real; { локальные переменные } begin закончить, если N=0 if N > 0 then begin x 1 : = x 0 + L*cos(a); y 1 : = y 0 - L*sin(a); рекурсивные Line (round(x 0), round(y 0), вызовы round(x 1), round(y 1)); Pifagor (x 1, y 1, a+pi/4, L*k, N-1); Pifagor (x 1, y 1, a-pi/4, L*k, N-1); end; Рекурсивной называется процедура, вызывающая сама себя. 5

Программа program qq; procedure Pifagor(x 0, y 0, a, L: real; N: integer); . Программа program qq; procedure Pifagor(x 0, y 0, a, L: real; N: integer); . . . длина ствола угол α end; begin Pifagor (250, 400, pi/2, 150, 8); end. x 0 ? y 0 число уровней Как наклонить дерево влево на 30 o? Pifagor (250, 400, 2*pi/3, 150, 8); 6

Задания « 4» : Используя рекурсивную процедуру, построить фигуру: « 5» : Используя рекурсивную Задания « 4» : Используя рекурсивную процедуру, построить фигуру: « 5» : Используя рекурсивную процедуру, построить фигуру: 7