Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Var I : integer;

FUNCTION FIB(I : INTEGER) : INTEGER;

BEGIN

IF I = 0 THEN FIB := 0;

IF (I = 1) OR (I = 2) THEN FIB := 1

ELSE

FIB := FIB(l-1)+FIB(l-2)

END;

BEGIN

REPEAT

WRITE('BBEДИTE ПОРЯДКОВЫЙ НОМЕР ЧИСЛА I »');

READLN(I);

UNTIL I > = 0;

WRITELN( I : 5, ' -E ЧИСЛО ФИБОНАЧЧИ РАВНО ', FIB(I))

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- создаем описание рекурсивной функции FIB;

- вводим порядковый номер числа I;

- вызываем рекурсивную функцию FIB(I) для определения числа Фибоначчи;

- завершаем работу программы.

Переменные:

в функции FIB:

I - натуральное число (формальный параметр);

в основной программе:

I - натуральное число (глобальная переменная).

Задача 9.11 Использовать рекурсию для решения задачи 9.7 о цифровом корне.

PROGRAM PG9J1;

Var n : longint;

FUNCTION NUM(I : LONGINT) : INTEGER;

Var s : integer;

BEGIN

S:=0;

REPEAT

S := S+N MOD 10;

N := N DIV 10

UNTIL N = 0;

NUM := S

END;

FUNCTION ROOT(L : LONGINT): INTEGER;

BEGIN

IF N<10 THEN ROOT := N

ELSE

BEGIN

N := NUM(N);

ROOT := ROOT(N);

END;

END;

BEGIN

WRITE('BBEДИTE ЦЕЛОЕ ЧИСЛО N = ');

READLN(N);

WRITELN('EГO ЦИФРОВОЙ КОРЕНЬ РАВЕН :', ROOT(N))

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- создаем описание функций NUM и ROOT;

- вводим целое число N;

- вызываем рекурсивную функцию ROUT и определяем циф­ровой корень числа N;

- завершаем работу программы.

Переменные:

в функции NUM:

N - целое число (глобальная переменная);

S - вспомогательная переменная (локальная переменная);

в функции ROOT:

N - целое число (глобальная переменная);

в основной программе:

N - целое число (глобальная переменная).

Задача 9.12 Использовать рекурсию для решения задачи 9.8 о квадратах.

PROGRAM PG9J2;

Var а, в, X, d, y : integer;

FUNCTION MIN(I, J : INTEGER): INTEGER;

BEGIN

IF KJ THEN MIN := I

ELSE MIN := J

END;

FUNCTION MAX(I, J : INTEGER): INTEGER;

BEGIN

IF I>J THEN MAX := I

ELSE MAX := J

END;

FUNCTION F : INTEGER;

BEGIN

IF X = Y THEN F := 1

ELSE

BEGIN

D := Y-X;

Y := MAX(D, X);

X := MIN(D, X);

F := F+1;

END

END;

BEGIN

WRITELN('BBEДИTE ДВА НАТУРАЛЬНЫХ ЧИСЛА');

READLN(A, В);

X := MIN(A, В);

Y := MAX(A, В);

WRITELN('ИCKOMOE ЧИСЛО КВАДРАТОВ :', F)

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- создаем описание функций MIN, MAX и F;

- вводим два натуральных числа А и В;

- присваиваем начальные значения вспомогательным пере­менным;

- вызываем рекурсивную функцию F, которая определяет ко­личество квадратов;

- завершаем работу программы.

Переменные:

в функции MIN;

I, J - два целых числа (формальные параметры);

в функции МАХ;

I, J - два целых числа (формальные параметры);

в функции F:

D, X, Y - вспомогательные переменные (глобальные переменные); в основной программе:

А, В - два натуральных числа (глобальные переменные);

D, X, Y - вспомогательные переменные.

ВВЕДИТЕ ДВА НАТУРАЛЬНЫХ ЧИСЛА

7 3

ИСКОМОЕ ЧИСЛО КВАДРАТОВ: 5

ВВЕДИТЕ ДВА НАТУРАЛЬНЫХ ЧИСЛА

7 13

ИСКОМОЕ ЧИСЛО КВАДРАТОВ: 8

Рис. 9.3. Результат работы PG9_12

Задача 9.13 Использовать рекурсию для решения задачи 9.9 о бильярде.

PROGRAM PG9J3;