ВУЗ:
Составители:
Рубрика:
211
begin
wwod(a,n);
writeln('Периметр многоугольника ',perim(a,n));
writeln('Площадь многоугольника ',area(a,n));
writeln('Длина наибольшей стороны ',stor(a,n));
writeln('Длина наибольшей диагонали ',diag(a,n));
end.
13.2. Рекурсивные процедуры и функции
В общем случае рекурсией называется ситуация, когда какой-то алгоритм
вызывает себя прямо или через другие алгоритмы в качестве вспомогательного.
Сам алгоритм при этом называется рекурсивным. Понятно, что без конца такие
вызовы продолжаться не могут, так как в противном случае получится
бесконечный цикл. Поэтому при построении рекурсивного алгоритма
предусматриваются случаи, когда результат вычисляется явно (
непосредственно)
без самовызова.
Таким образом, любая рекурсия обязательно должна содержать два условия:
1) Вычисление результата через другие значения (для простейших случаев).
Выполнение этого условия не должно повлечь за собой нового рекурсивного
вызова.
2) Вычисление значения с помощью самовызова функции (рекурсивный вызов).
Пример 13.5. Широко известно рекурсивное определение факториала:
(
)
n =
1, если n=0 или n=1,
n-1 , если n>1.!
⎧
⎨
⎩
Здесь n - неотрицательно. Запишите эту функцию на Паскале.
Решение. В первой строке определения явно указано, как вычислить факториал,
если аргумент равен нулю или единице. В любом другом случае для вычисления n!
необходимо вычислить предыдущее значение (n-1)! и умножить его на n.
Уменьшающееся значение гарантирует, что в конце концов возникнет
необходимость найти 1! или 0!, которые вычисляются непосредственно.
program task5;
var n : integer; { исходное значение }
function fact(i:integer):integer;
begin if (i=1) or (i=0)
then fact := 1
else fact := fact(i-1)*i
end;
begin write('Введите нужное значение n ');
readln(n);
writeln('Факториал
',n,' равен ',fact(n))
end.
211
begin
wwod(a,n);
writeln('Периметр многоугольника ',perim(a,n));
writeln('Площадь многоугольника ',area(a,n));
writeln('Длина наибольшей стороны ',stor(a,n));
writeln('Длина наибольшей диагонали ',diag(a,n));
end.
13.2. Рекурсивные процедуры и функции
В общем случае рекурсией называется ситуация, когда какой-то алгоритм
вызывает себя прямо или через другие алгоритмы в качестве вспомогательного.
Сам алгоритм при этом называется рекурсивным. Понятно, что без конца такие
вызовы продолжаться не могут, так как в противном случае получится
бесконечный цикл. Поэтому при построении рекурсивного алгоритма
предусматриваются случаи, когда результат вычисляется явно (непосредственно)
без самовызова.
Таким образом, любая рекурсия обязательно должна содержать два условия:
1) Вычисление результата через другие значения (для простейших случаев).
Выполнение этого условия не должно повлечь за собой нового рекурсивного
вызова.
2) Вычисление значения с помощью самовызова функции (рекурсивный вызов).
Пример 13.5. Широко известно рекурсивное определение факториала:
⎧1, если n = 0 или n = 1,
n = ⎨
⎩( n -1)!, если n > 1.
Здесь n - неотрицательно. Запишите эту функцию на Паскале.
Решение. В первой строке определения явно указано, как вычислить факториал,
если аргумент равен нулю или единице. В любом другом случае для вычисления n!
необходимо вычислить предыдущее значение (n-1)! и умножить его на n.
Уменьшающееся значение гарантирует, что в конце концов возникнет
необходимость найти 1! или 0!, которые вычисляются непосредственно.
program task5;
var n : integer; { исходное значение }
function fact(i:integer):integer;
begin if (i=1) or (i=0)
then fact := 1
else fact := fact(i-1)*i
end;
begin write('Введите нужное значение n ');
readln(n);
writeln('Факториал ',n,' равен ',fact(n))
end.
Страницы
- « первая
- ‹ предыдущая
- …
- 207
- 208
- 209
- 210
- 211
- …
- следующая ›
- последняя »
