Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Листинг 12.2. Использование рекурсивной функции

Читайте также:
  1. Callback-функции;
  2. I. Понятие, структура и функции религии. Социологические теории религии.
  3. N3 Функции философии
  4. PR и использование новейших СМИ.
  5. SADT. Виды, назначение, использование обратной связи на диаграммах.
  6. V. СТАТУС МЕЖДУНАРОДНОЙ КОНВЕНЦИИ О БОРЬБЕ С ВЕРБОВКОЙ, ИСПОЛЬЗОВАНИЕМ, ФИНАНСИРОВАНИЕМ И ОБУЧЕНИЕМ НАЕМНИКОВ
  7. VI. Саурсы и кисло-сладкие коктейли с использованием ароматических модификаторов.
  8. Абсолютные и относительные показатели колеблемости рисков. Их использование в страховании.
  9. Адаптационные изменения сердечно-сосудистой системы при физических нагрузках. Средства ЛФК, восстанавливающие нарушения функции сердца.
  10. Анализ производственной функции. Закон убывающей предельной производительности факторов производства.

unit factor;

Interface

uses Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

Type

TForm1 = class (TForm)

Label1: TLabel; Label2: TLabel;

Edit1: TEdit;

Button1: TButton;

procedure ButtonlClick(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

Var

Form1: TForm1;

Implementation

{$R *.DFM}

// рекурсивная функция

function factorial(n: integer): integer;

Begin

if n > 1

then factorial:=n*factorial(n-1) // функция вызывает сама себя

else factorial:= 1; // факториал 1 равен 1

end;

procedure TForml.ButtonlClick(Sender: TObject);

Var

k:integer; // число, факториал которого надо вычислить

f:integer; // значение факториала числа k

Begin

k:= StrToInt(Edit1.Text);

f:= factorial(k);

label2.caption:='Факториал числа '+Edit1.Text

+ ' равен '+IntToStr(f);

end;

End.

На рис. 12.2 приведены два диалоговых окна. Результат вычисления факториала, представленный на рис. 12.2, а, соответствует ожидаемому.

 

Рис. 12.2. Примеры работы программы вычисления факториала

Результат, представленный на рис. 12.2, б, не соответствует ожидаемому. Факториал числа 44 равен нулю! Произошло это потому, что факториал числа 44 настолько велик, что превысил максимальное значение для переменной типа integer, и, как говорят программисты, произошло переполнение с потерей значения.

Delphi может включить в исполняемую программу инструкции контроля диапазона значений переменных. Чтобы инструкции контроля были добавлены в программу, нужно во вкладке Compiler диалогового окна Project Options (рис. 12.3) установить флажок Overflow checking (Контроль переполнения), который находится в группе Runtime errors (Ошибки времени выполнения).

Рис. 12.3. Вкладка Compiler диалогового окна Project Options




Дата добавления: 2015-02-16; просмотров: 17 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав