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; VAR А, В: INTEGER; FUNCTION BILL(Y, X: INTEGER): INTEGER; VAR К: INTEGER; BEGIN K:=YDIVX; IF Y MOD X = 0 THEN BILL:= К ELSE BEGIN Y:= A-X+Y MOD X; BILL:= K+BILL(Y, X)+2 END END; BEGIN REPEAT WRITE('BBEДИTE ДВА НАТУРАЛЬНЫХ ЧИСЛА А>В');
|