Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

var i, k: integer;. function F(x:integer):longint;. if x = 1 then. else F:=x*F(x-1);. readln(K);. while (i>0) and (F(i) > K) do




var i, k: integer;

function F(x: integer): longint;

begin

if x = 1 then

  F: =1

else F: =x*F(x-1);

end;

begin

i: = 12;

readln(K);

while (i> 0) and (F(i) > K) do

i: =i-1;

writeln(i);  

end.

Решение:

1) заметим, что рекурсивная функция F(x) вычисляет факториал переданного ей числа, то есть произведение x! =1× 2× 3×... × (x-1) × x

2) повторяя рассуждения предыдущей задачи, определяем, что функция выведет количество натуральных чисел, факториалы которых меньше или равны K

3) выпишем факториалы первых натуральных чисел:

1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120, 6! = 720, …

4) из этого ряда факториалы первых четырех чисел меньше или равны 24, поэтому при K=24 функция выведет число 4

5) программа выведет именно 4 при всех K, при которых , то есть при ; в этот диапазон входит 120-24 = 96 чисел

6) Ответ: 96.

Ещё пример задания:

P-04. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a, b, t, N, P: integer;

Function F(x: integer): integer;

begin

F: = 16*(9-x)*(9-x)+127;

end;

BEGIN

a: = -25; b: = 25;

P: = 130;

N: = 0;

for t: = a to b do begin

if (F(t) > P) then begin

N: = N+1;

end;

end;

  write(N);

END.

Решение:

1) заметим, что в конце работы программы на экран выводится значение переменной N

2) в программе значение N сначала обнуляется, а затем на каждом шаге цикла увеличивается на 1 при условии, что значение функции F(t) больше значения P = 130; таким образом, N – это счётчик точек с целочисленными значениями на отрезке [-25; 25], в которых значение функции больше, чем 130

3) график функция 16*(9-x)*(9-x)+127 – парабола с ветвями вверх, минимальное значение в точке x = 9 равно 127

4) значение функции при x = 8 и x = 10 (рядом с точкой минимума) равны 16+127 = 143, поэтому только в одной точке x = 9 не выполняется условие F(t) > P

5) всего на интервале [-25; 25] есть 51 точка с целочисленными координатами; во всех, за исключением одной условие F(t) > P выполняется, то есть счётчик увеличивается на 1

6) Ответ: 50.

Ещё пример задания:

P-03. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a, b, t, M, R: integer;

Function F(x: integer): integer;

begin

F: =(x*x-4)*(x*x-4)+6;

end;

BEGIN

a: =-10; b: =10;

M: =a; R: =F(a);

for t: =a to b do begin

if (F(t)< R)then begin

M: =t;

R: =F(t);

end;

end;

write(M+6);

END.

Решение:

17) заметим, что в программе есть цикл, в котором переменная t принимает последовательно все целые значения в интервале от a до b:

for t: =a to b do begin

...

end;

18) до начала цикла в переменную M записывается значение a, а в переменную R – значение функции в точке a:

M: =a; R: =F(a);

19) внутри цикла есть условный оператор, в котором вычисляется значение функции F(t) и сравнивается со значением переменной R:

if (F(t)< R)then begin

M: =t;

R: =F(t);

end;

если новое значение функции меньше, чем значение R, в R записывается значение функции в точке t, а в переменной M запоминается само значение t (аргумент функции, соответствующий значению в R)

20) в результате анализа пп. 1-3 можно сделать вывод, что цикл ищет минимум функции F(t) на интервале от a до b, и после выполнения цикла в переменной M оказывается значение аргумента t, при котором функция достигает минимума на заданном интервале (здесь это интервал [-10, 10])

21) функция, которая используется в программе, – это квадратичная парабола: , её ветви направлены вверх (коэффициент при  положительный, равен 1); она имеет два минимума в точках  и

22) обе точки минимума находятся на отрезке [-10; 10], поэтому программа найдёт одну из этих точек; вопрос: какую именно?

23) для квадратичной параболы обе точки минимума имеют одинаковую -координату, а запоминание новой точки минимума происходит только тогда, когда только что вычисленное значение F(t) станет строго меньше, чем хранящееся в переменной R:

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...