Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Очень часто в математических выражениях используется так называемое рекурсивное определение функций:
factorial(1)=1; для n>1: factorial(n)= factorial(n-1)*n.
Многие алгоритмы задаются рекурсивно. Например, анализ транслятором вложенных процедур. Для реализации такого рода алгоритмов используется рекурсивный вызов процедур. Например, вычисление факториала можно задать как
function factorial(n:integer):extended;
begin
result:=1;
if n>=1 then result:=n*factorial(n-1)
end;
У рекурсии есть недостатки: а) при каждом вложенном вызове создается копия локальных переменных процедуры, они храняться в стеке. При большой глубине вложенности стек может переполниться; b) очень часто встречается ситуация бесконечной рекурсии. Так, если бы мы не написали условия n>=1, рекурсные вызовы продолжались бы вплоть до переполнения:
function factsfoo(n:integer):extended;
begin
result:>=n*factorial(n-1)
end;
Основные принципы объектно-ориентированного программирования (ООП) на примере языка Object Pascal (Delphi) со статической версией объектной модели
Рассматриваемая версия объектной модели характерна для языка TurboPASCAL (TP5.5 – TP7.0) и очень близка к объектной модели C++ (за исключением того, что в C++ поддерживается также множественное наследование и ряд других дополнительных возможностей). В Delphi эта модель поддерживается, но рассматривается как устаревшая. Основной считается модель с динамически создаваемыми объектами, во многом близкая по идеологии к объекной модели языка Java.
Дата публикования: 2014-11-29; Прочитано: 239 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!