Индивидуальные практические работы и контрольные работы

Таблица 1

последние цифры № зач.книжки

№ контр.

задания и варианта

последние цифры № зач.книжки

№ контр.

задания и варианта

01

1

41

4

02

2

42

5

03

3

43

6

04

4

44

7

05

5

45

8

06

6

46

9

07

7

47

10

08

8

48

11

09

9

49

12

10

10

50

13

11

11

51

14

12

12

52

15

13

13

53

1

14

14

54

2

15

15

55

3

16

1

56

4

17

2

57

5

18

3

58

6

19

4

59

7

20

5

60

8

21

6

61

9

22

7

62

10

23

8

63

11

24

9

64

12

25

10

65

13

26

11

66

14

27

12

67

15

28

13

68

1

29

14

69

2

30

15

70

3

31

1

71

4

32

2

72

5

33

3

73

6

34

7-4

74

8-3

35

8-4

75

9-3

36

9-4

76

1-4

37

1-5

77

2-4

38

2-5

78

3-4

39

3-5

79

4-4

40

4-5

80

5-4

Индивидуальная практическая работа №1. Программирование с использованием рекурсии

Цель лабораторной работы: изучить способы программирования алгоритмов с использованием рекурсии

1.1. Понятие рекурсии

рекурсия – это такой способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе. Классический пример программирования вычисления n-го члена (n>0) рекуррентной последовательности xn= (xn-1) при x0=a

...

Function XR(n:Word):extended;

begin

if n=0 then XR:=a

else XR:=(XR(n-1));

end;

Здесь  функция, определяющая закон рекуррентности и определяемая в общем случае как:

Function Fi(x:extended):extended;

begin Result:= XR(n-1)+b/XR(n-1))/2 end;

или явно, например, как

XR:=(XR(n-1)+b/XR(n-1))/2.

Обращение: a:=a0; b:=b0; y:=XR(n0);

При выполнении вышеприведенной рекурсивной подпрограммы осуществляется многократный переход от некоторого текущего уровня организации алгоритма к нижнему уровню последовательно, до тех пор, пока наконец не будет получено тривиальное решение задачи (в вышеприведенном примере n=0).

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

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